#At file:///work/bzr/6.0-clean/
2741 Horst Hunger 2008-07-23 [merge]
Merge from parent.
added:
mysql-test/include/weight_string_euro.inc
modified:
include/m_ctype.h
mysql-test/include/weight_string.inc
mysql-test/include/weight_string_8140.inc
mysql-test/include/weight_string_8EA1.inc
mysql-test/include/weight_string_8FA2C3.inc
mysql-test/include/weight_string_A1A1.inc
mysql-test/include/weight_string_chde.inc
mysql-test/mysql-test-run.pl*
mysql-test/r/ctype_big5.result
mysql-test/r/ctype_cp1250_ch.result
mysql-test/r/ctype_cp932_binlog_stm.result
mysql-test/r/ctype_eucjpms.result
mysql-test/r/ctype_euckr.result
mysql-test/r/ctype_gb2312.result
mysql-test/r/ctype_gbk.result
mysql-test/r/ctype_latin1.result
mysql-test/r/ctype_latin1_de.result
mysql-test/r/ctype_latin2.result
mysql-test/r/ctype_latin2_ch.result
mysql-test/r/ctype_sjis.result
mysql-test/r/ctype_tis620.result
mysql-test/r/ctype_uca.result
mysql-test/r/ctype_ucs.result
mysql-test/r/ctype_ujis.result
mysql-test/r/ctype_utf16.result
mysql-test/r/ctype_utf16_uca.result
mysql-test/r/ctype_utf32.result
mysql-test/r/ctype_utf32_uca.result
mysql-test/r/ctype_utf8.result
mysql-test/r/partition_pruning.result
mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result
mysql-test/t/ctype_cp1250_ch.test
mysql-test/t/ctype_latin1.test
mysql-test/t/ctype_latin1_de.test
mysql-test/t/ctype_latin2_ch.test
mysql-test/t/ctype_uca.test
mysql-test/t/ctype_ucs.test
mysql-test/t/ctype_utf16.test
mysql-test/t/ctype_utf16_uca.test
mysql-test/t/ctype_utf32.test
mysql-test/t/ctype_utf32_uca.test
mysql-test/t/ctype_utf8.test
mysql-test/t/disabled.def
mysys/my_uuid.c
sql/field.cc
sql/filesort.cc
sql/handler.cc
sql/item_strfunc.cc
sql/item_strfunc.h
sql/sql_yacc.yy
strings/ctype-czech.c
strings/ctype-mb.c
strings/ctype-simple.c
strings/ctype-tis620.c
strings/ctype-uca.c
strings/ctype-ucs2.c
strings/ctype-utf8.c
strings/ctype-win1250ch.c
=== modified file 'include/m_ctype.h'
--- a/include/m_ctype.h 2008-03-12 12:18:02 +0000
+++ b/include/m_ctype.h 2008-07-23 09:43:50 +0000
@@ -106,7 +106,7 @@ extern MY_UNI_CTYPE my_uni_ctype[256];
#define MY_STRXFRM_NLEVELS 6 /* Number of possible levels*/
#define MY_STRXFRM_PAD_WITH_SPACE 0x00000040 /* if pad result with spaces */
-#define MY_STRXFRM_UNUSED_00000080 0x00000080 /* for future extensions */
+#define MY_STRXFRM_PAD_TO_MAXLEN 0x00000080 /* if pad tail(for filesort) */
#define MY_STRXFRM_DESC_LEVEL1 0x00000100 /* if desc order for level1 */
#define MY_STRXFRM_DESC_LEVEL2 0x00000200 /* if desc order for level2 */
@@ -545,6 +545,10 @@ size_t my_strnxfrm_mb(CHARSET_INFO *,
uchar *dst, size_t dstlen, uint nweights,
const uchar *src, size_t srclen, uint flags);
+size_t my_strnxfrm_unicode(CHARSET_INFO *,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags);
+
int my_wildcmp_unicode(CHARSET_INFO *cs,
const char *str, const char *str_end,
const char *wildstr, const char *wildend,
=== modified file 'mysql-test/include/weight_string.inc'
--- a/mysql-test/include/weight_string.inc 2007-04-03 11:16:17 +0000
+++ b/mysql-test/include/weight_string.inc 2008-07-23 09:43:50 +0000
@@ -5,3 +5,27 @@ select hex(weight_string('abc'));
select hex(weight_string('abc' as char(2)));
select hex(weight_string('abc' as char(3)));
select hex(weight_string('abc' as char(5)));
+
+# Read 2 characters from the source string (the last character is not used).
+select hex(weight_string('abc', 1, 2, 0xC0));
+select hex(weight_string('abc', 2, 2, 0xC0));
+select hex(weight_string('abc', 3, 2, 0xC0));
+select hex(weight_string('abc', 4, 2, 0xC0));
+select hex(weight_string('abc', 5, 2, 0xC0));
+select hex(weight_string('abc',25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used).
+select hex(weight_string('abc', 1, 3, 0xC0));
+select hex(weight_string('abc', 2, 3, 0xC0));
+select hex(weight_string('abc', 3, 3, 0xC0));
+select hex(weight_string('abc', 4, 3, 0xC0));
+select hex(weight_string('abc', 5, 3, 0xC0));
+select hex(weight_string('abc',25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string('abc', 1, 4, 0xC0));
+select hex(weight_string('abc', 2, 4, 0xC0));
+select hex(weight_string('abc', 3, 4, 0xC0));
+select hex(weight_string('abc', 4, 4, 0xC0));
+select hex(weight_string('abc', 5, 4, 0xC0));
+select hex(weight_string('abc',25, 4, 0xC0));
=== modified file 'mysql-test/include/weight_string_8140.inc'
--- a/mysql-test/include/weight_string_8140.inc 2007-04-03 11:16:17 +0000
+++ b/mysql-test/include/weight_string_8140.inc 2008-07-23 09:43:50 +0000
@@ -9,3 +9,28 @@ select hex(weight_string(cast(0x408140 a
select hex(weight_string(cast(0x4081408140 as char) as char(3)));
select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+
+# Read 2 characters from the source string (the last character is not used)
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used)
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+
=== modified file 'mysql-test/include/weight_string_8EA1.inc'
--- a/mysql-test/include/weight_string_8EA1.inc 2007-04-03 11:16:17 +0000
+++ b/mysql-test/include/weight_string_8EA1.inc 2008-07-23 09:43:50 +0000
@@ -9,3 +9,28 @@ select hex(weight_string(cast(0x408EA1 a
select hex(weight_string(cast(0x408EA18EA1 as char) as char(3)));
select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+
+# Read 2 characters from the source string (the last character is not used)
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used)
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+
=== modified file 'mysql-test/include/weight_string_8FA2C3.inc'
--- a/mysql-test/include/weight_string_8FA2C3.inc 2007-04-03 11:16:17 +0000
+++ b/mysql-test/include/weight_string_8FA2C3.inc 2008-07-23 09:43:50 +0000
@@ -9,3 +9,28 @@ select hex(weight_string(cast(0x408FA2C3
select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3)));
select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
+
+# Read 2 characters from the source string (the last character is not used)
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used)
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0));
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0));
+
=== modified file 'mysql-test/include/weight_string_A1A1.inc'
--- a/mysql-test/include/weight_string_A1A1.inc 2007-04-03 11:16:17 +0000
+++ b/mysql-test/include/weight_string_A1A1.inc 2008-07-23 09:43:50 +0000
@@ -9,3 +9,28 @@ select hex(weight_string(cast(0x40A1A1 a
select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3)));
select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+
+# Read 2 characters from the source string (the last character is not used)
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used)
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+
=== modified file 'mysql-test/include/weight_string_chde.inc'
--- a/mysql-test/include/weight_string_chde.inc 2007-07-06 09:57:17 +0000
+++ b/mysql-test/include/weight_string_chde.inc 2008-07-23 09:43:50 +0000
@@ -13,9 +13,47 @@ select hex(weight_string(cast(_latin1 0x
select hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)));
select hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)));
select hex(weight_string(cast(_latin1 0x6368DF as char) as char(4)));
-# expansion 'shart s' plus contraction 'ch'
+# expansion 'sharp s' plus contraction 'ch'
select hex(weight_string(cast(_latin1 0xDF6368 as char)));
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)));
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)));
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)));
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
+
+# contraction 'ch' plus expansion 'sharp s'
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+
+# expansion 'sharp s' plus contraction 'ch'
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
=== added file 'mysql-test/include/weight_string_euro.inc'
--- a/mysql-test/include/weight_string_euro.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/weight_string_euro.inc 2008-07-23 09:43:50 +0000
@@ -0,0 +1,30 @@
+select @@collation_connection;
+select hex(weight_string(cast(_latin1 0x80 as char)));
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+
+# Read 2 characters from the source string (the last character is not used).
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+
+# Read 3 characters from the source string (the entire string is used).
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+
+# Read 4 characters from the source string (extra space is added)
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
=== modified file 'mysql-test/mysql-test-run.pl' (properties changed: -x to +x)
=== modified file 'mysql-test/r/ctype_big5.result'
--- a/mysql-test/r/ctype_big5.result 2008-05-05 11:22:31 +0000
+++ b/mysql-test/r/ctype_big5.result 2008-07-23 09:43:50 +0000
@@ -381,6 +381,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
big5_chinese_ci
@@ -444,6 +498,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A140A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A140A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A140A14020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A140A140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A140A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A140A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A140A140A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A140A140A14020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A140A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A140A140
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A140A140A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A140A140A14020202020202020202020202020202020202020
set collation_connection=big5_bin;
select @@collation_connection;
@@collation_connection
@@ -466,6 +574,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
big5_bin
@@ -529,3 +691,57 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_cp1250_ch.result'
--- a/mysql-test/r/ctype_cp1250_ch.result 2008-03-27 19:02:15 +0000
+++ b/mysql-test/r/ctype_cp1250_ch.result 2008-07-23 09:43:50 +0000
@@ -284,6 +284,132 @@ A4A5A6020202
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
A4A5A682820202020101
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+A4
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+A4A5
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+A4A502
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+A4A50202
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+A4A5020200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+A4A50202000000000000000000000000000000000000000000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+A4
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+A4A5
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+A4A5A6
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+A4A5A602
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+A4A5A60202
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+A4A5A602020200000000000000000000000000000000000000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+A4
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+A4A5
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+A4A5A6
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+A4A5A682
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+A4A5A68202
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+A4A5A682020202010000000000000000000000000000000000
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+8123
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+818181232323
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+81812323
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+818181232323
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+81818182822323230101
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+8181
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+818123
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+81812323
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+8181232300
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+81812323000000000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+8181
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+818181
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+81818123
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+8181812323
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+81818123232300000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+8181
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+818181
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+81818182
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+8181818223
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+81818182232323010000000000000000000000000000000000
select @@collation_connection;
@@collation_connection
cp1250_czech_cs
@@ -341,6 +467,96 @@ BBAD82010301
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
BBAD828201030101
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+AD
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+ADBB
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+ADBB03
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+ADBB0301
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+ADBB0301000000000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+AD
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+ADBB
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+ADBB82
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+ADBB8203
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+ADBB8203010100000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+AD
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+ADBB
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+ADBB82
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+ADBB8282
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+ADBB8282030101010000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+BB
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+BBAD
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+BBAD01
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+BBAD0103
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+BBAD0103000000000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+BB
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+BBAD
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+BBAD82
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+BBAD8201
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+BBAD8201030100000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+BB
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+BBAD
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+BBAD82
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+BBAD8282
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+BBAD8282010301010000000000000000000000000000000000
select @@collation_connection;
@@collation_connection
cp1250_czech_cs
=== modified file 'mysql-test/r/ctype_cp932_binlog_stm.result'
--- a/mysql-test/r/ctype_cp932_binlog_stm.result 2008-05-16 21:12:55 +0000
+++ b/mysql-test/r/ctype_cp932_binlog_stm.result 2008-07-23 09:43:50 +0000
@@ -68,6 +68,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
cp932_japanese_ci
@@ -131,6 +185,60 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
set collation_connection=cp932_bin;
select @@collation_connection;
@@collation_connection
@@ -153,6 +261,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
cp932_bin
@@ -216,4 +378,58 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
End of 5.1 tests
=== modified file 'mysql-test/r/ctype_eucjpms.result'
--- a/mysql-test/r/ctype_eucjpms.result 2008-02-21 05:37:57 +0000
+++ b/mysql-test/r/ctype_eucjpms.result 2008-07-23 09:43:50 +0000
@@ -9882,6 +9882,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
eucjpms_japanese_ci
@@ -9945,6 +9999,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
eucjpms_japanese_ci
@@ -9978,6 +10086,60 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8EA18EA120
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8EA18EA1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
select collation(cast(0x8FA2C3 as char));
collation(cast(0x8FA2C3 as char))
eucjpms_japanese_ci
@@ -10011,6 +10173,60 @@ hex(weight_string(cast(0x408FA2C38FA2C38
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
40408FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0))
+8FA2C38FA2C320202020202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
set collation_connection=eucjpms_bin;
select @@collation_connection;
@@collation_connection
@@ -10033,6 +10249,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
eucjpms_bin
@@ -10096,6 +10366,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
eucjpms_bin
@@ -10129,6 +10453,60 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8EA18EA120
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8EA18EA1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
select collation(cast(0x8FA2C3 as char));
collation(cast(0x8FA2C3 as char))
eucjpms_bin
@@ -10162,3 +10540,57 @@ hex(weight_string(cast(0x408FA2C38FA2C38
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
40408FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0))
+8FA2C38FA2C320202020202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_euckr.result'
--- a/mysql-test/r/ctype_euckr.result 2008-03-27 19:02:15 +0000
+++ b/mysql-test/r/ctype_euckr.result 2008-07-23 09:43:50 +0000
@@ -257,6 +257,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
euckr_korean_ci
@@ -320,6 +374,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
set collation_connection=euckr_bin;
select @@collation_connection;
@@collation_connection
@@ -342,6 +450,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
euckr_bin
@@ -405,6 +567,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
create table t1 (s1 varchar(5) character set euckr);
insert into t1 values (0xA141);
insert into t1 values (0xA15A);
=== modified file 'mysql-test/r/ctype_gb2312.result'
--- a/mysql-test/r/ctype_gb2312.result 2008-05-05 11:22:31 +0000
+++ b/mysql-test/r/ctype_gb2312.result 2008-07-23 09:43:50 +0000
@@ -339,6 +339,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
gb2312_chinese_ci
@@ -402,6 +456,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
set collation_connection=gb2312_bin;
select @@collation_connection;
@@collation_connection
@@ -424,6 +532,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
gb2312_bin
@@ -487,3 +649,57 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_gbk.result'
--- a/mysql-test/r/ctype_gbk.result 2008-06-04 13:20:03 +0000
+++ b/mysql-test/r/ctype_gbk.result 2008-07-23 09:43:50 +0000
@@ -359,6 +359,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
gbk_chinese_ci
@@ -422,6 +476,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+810B81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+810B810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+810B810B20
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+810B810B202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+810B81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+810B810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+810B810B81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+810B810B810B20202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+810B81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+810B810B
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+810B810B81
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+810B810B810B20202020202020202020202020202020202020
select collation(cast(0x8140 as char));
collation(cast(0x8140 as char))
gbk_chinese_ci
@@ -455,6 +563,60 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
4040A2CD
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+A2
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+A2CD
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+A2CDA2
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+A2CDA2CD
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+A2CDA2CD20
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+A2CDA2CD202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+A2
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+A2CD
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+A2CDA2
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+A2CDA2CD
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+A2CDA2CDA2
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+A2CDA2CDA2CD20202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+A2
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+A2CD
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+A2CDA2
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+A2CDA2CD
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+A2CDA2CDA2
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+A2CDA2CDA2CD20202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
gbk_chinese_ci
@@ -488,6 +650,60 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8E088E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8E088E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8E088E0820
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8E088E08202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8E088E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8E088E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8E088E088E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8E088E088E0820202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8E088E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8E088E08
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8E088E088E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8E088E088E0820202020202020202020202020202020202020
set collation_connection=gbk_bin;
select @@collation_connection;
@@collation_connection
@@ -510,6 +726,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
gbk_bin
@@ -573,6 +843,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
select collation(cast(0x8140 as char));
collation(cast(0x8140 as char))
gbk_bin
@@ -606,6 +930,60 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
gbk_bin
@@ -639,3 +1017,57 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8EA18EA120
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8EA18EA1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_latin1.result'
--- a/mysql-test/r/ctype_latin1.result 2007-07-21 07:14:04 +0000
+++ b/mysql-test/r/ctype_latin1.result 2008-07-23 09:43:50 +0000
@@ -432,6 +432,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
+select @@collation_connection;
+@@collation_connection
+latin1_swedish_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+80802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+8080202020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+80802020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+80808020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+80808020202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin1_swedish_ci
@@ -484,6 +610,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
+select @@collation_connection;
+@@collation_connection
+latin1_bin
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+80802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+8080202020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+80802020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+80808020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+80808020202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin1_bin
@@ -536,6 +788,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4252542020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+42
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4252
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+425220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+42522020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4252202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+42522020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+42
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4252
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+425254
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+42525420
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4252542020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+42525420202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+42
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4252
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+425254
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+42525420
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4252542020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+42525420202020202020202020202020202020202020202020
+select @@collation_connection;
+@@collation_connection
+latin1_general_cs
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+C0
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+C0C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+C0C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+C0C0C02020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+C0C020
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+C0C02020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+C0C0202020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+C0C02020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+C0C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+C0C0C020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+C0C0C02020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+C0C0C020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+C0C0C0
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+C0C0C020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+C0C0C02020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+C0C0C020202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin1_general_cs
@@ -588,6 +966,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162630000
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616200
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61620000
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162000000
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61620000000000000000000000000000000000000000000000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626300
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162630000
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626300000000000000000000000000000000000000000000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626300
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162630000
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626300000000000000000000000000000000000000000000
+select @@collation_connection;
+@@collation_connection
+binary
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+8080800000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+808000
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+80800000
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+8080000000
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+80800000000000000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+80808000
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+8080800000
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+80808000000000000000000000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+80808000
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+8080800000
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+80808000000000000000000000000000000000000000000000
select @@collation_connection;
@@collation_connection
binary
=== modified file 'mysql-test/r/ctype_latin1_de.result'
--- a/mysql-test/r/ctype_latin1_de.result 2008-02-27 10:04:05 +0000
+++ b/mysql-test/r/ctype_latin1_de.result 2008-07-23 09:43:50 +0000
@@ -402,6 +402,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
+select @@collation_connection;
+@@collation_connection
+latin1_german2_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+80802020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+8080202020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+80802020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+80808020202020202020202020202020202020202020202020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+80
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+8080
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+808080
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+80808020
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+8080802020
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+80808020202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin1_german2_ci
=== modified file 'mysql-test/r/ctype_latin2.result'
--- a/mysql-test/r/ctype_latin2.result 2007-04-03 11:16:17 +0000
+++ b/mysql-test/r/ctype_latin2.result 2008-07-23 09:43:50 +0000
@@ -404,6 +404,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4144452020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4144
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414420
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41442020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4144202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41442020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4144
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414445
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41444520
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4144452020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41444520202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4144
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414445
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41444520
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4144452020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41444520202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin2_general_ci
@@ -456,6 +510,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
latin2_bin
=== modified file 'mysql-test/r/ctype_latin2_ch.result'
--- a/mysql-test/r/ctype_latin2_ch.result 2008-01-10 11:51:02 +0000
+++ b/mysql-test/r/ctype_latin2_ch.result 2008-07-23 09:43:50 +0000
@@ -75,6 +75,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
828384474701202020202001030303020201616263202000
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+82
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+8283
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+828301
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+82830120
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+8283012020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+82830120200103030161620000000000000000000000000000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+82
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+8283
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+828384
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+82838401
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+8283840120
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+82838401202020010303030161626300000000000000000000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+82
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+8283
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+828384
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+82838447
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+8283844701
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+82838447012020202001030303020161626320000000000000
select @@collation_connection;
@@collation_connection
latin2_czech_cs
@@ -132,6 +186,96 @@ hex(weight_string(cast(_latin1 0xDF6368
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
988B47470121202020010303020201DF63202000
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+8B
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+8B98
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+8B9801
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+8B980120
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+8B980120210103030163DF0000000000000000000000000000
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+8B
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+8B98
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+8B9847
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+8B984701
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+8B984701202120010303020163DF2000000000000000000000
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+8B
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+8B98
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+8B9847
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+8B984747
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+8B984747012021202001030302020163DF2020000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+98
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+988B
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+988B01
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+988B0121
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+988B01212001030301DF630000000000000000000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+98
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+988B
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+988B47
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+988B4701
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+988B47012120200103030201DF632000000000000000000000
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+98
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+988B
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+988B47
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+988B4747
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+988B47470121202020010303020201DF632020000000000000
select @@collation_connection;
@@collation_connection
latin2_czech_cs
@@ -405,3 +549,71 @@ l1 l2 l3 l4 name
9B01 2801 0301 FB00 LATIN SMALL LETTER U WITH DOUBLE ACUTE
9B01 2801 0501 DB00 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
drop table t1;
+set names utf8;
+create table t1 (
+ch varchar(1),
+name varchar(64)
+) character set latin2 collate latin2_czech_cs;
+insert into t1 values (0x4F,'LATIN CAPITAL LETTER O');
+insert into t1 values (0xD3,'LATIN CAPITAL LETTER O WITH ACUTE');
+insert into t1 values (0xD4,'LATIN CAPITAL LETTER O WITH CURCUMFLEX');
+insert into t1 values (0xD6,'LATIN CAPITAL LETTER O WITH DIAERESIS');
+insert into t1 values (0xD5,'LATIN CAPITAL LETTER O WITH DOUBLE ACUTE');
+insert into t1 values (0x75,'LATIN _SMALL_ LETTER U');
+insert into t1 values (0xFA,'LATIN _SMALL_ LETTER U WITH ACUTE');
+insert into t1 values (0xF9,'LATIN _SMALL_ LETTER U WITH RING ABOVE');
+insert into t1 values (0xFC,'LATIN _SMALL_ LETTER U WITH DIAERESIS');
+insert into t1 values (0xFB,'LATIN _SMALL_ LETTER U WITH DOUBLE ACUTE');
+select ch,
+hex(weight_string(ch level 1)) l1,
+hex(weight_string(ch level 2)) l2,
+hex(weight_string(ch level 3)) l3,
+hex(weight_string(ch level 4)) l4,
+name from t1 order by ch;
+ch l1 l2 l3 l4 name
+O 9201 2001 0501 4F00 LATIN CAPITAL LETTER O
+Ó 9201 2201 0501 D300 LATIN CAPITAL LETTER O WITH ACUTE
+Ô 9201 2401 0501 D400 LATIN CAPITAL LETTER O WITH CURCUMFLEX
+Ö 9201 2701 0501 D600 LATIN CAPITAL LETTER O WITH DIAERESIS
+Ő 9201 2801 0501 D500 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+u 9B01 2001 0301 7500 LATIN _SMALL_ LETTER U
+ú 9B01 2201 0301 FA00 LATIN _SMALL_ LETTER U WITH ACUTE
+ů 9B01 2601 0301 F900 LATIN _SMALL_ LETTER U WITH RING ABOVE
+ü 9B01 2701 0301 FC00 LATIN _SMALL_ LETTER U WITH DIAERESIS
+ű 9B01 2801 0301 FB00 LATIN _SMALL_ LETTER U WITH DOUBLE ACUTE
+alter table t1 modify ch char(1), modify name char(64);
+select ch,
+hex(weight_string(ch level 1)) l1,
+hex(weight_string(ch level 2)) l2,
+hex(weight_string(ch level 3)) l3,
+hex(weight_string(ch level 4)) l4,
+name from t1 order by ch;
+ch l1 l2 l3 l4 name
+O 9201 2001 0501 4F00 LATIN CAPITAL LETTER O
+Ó 9201 2201 0501 D300 LATIN CAPITAL LETTER O WITH ACUTE
+LEX
+Ö 9201 2701 0501 D600 LATIN CAPITAL LETTER O WITH DIAERESIS
+Ő 9201 2801 0501 D500 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+u 9B01 2001 0301 7500 LATIN _SMALL_ LETTER U
+ú 9B01 2201 0301 FA00 LATIN _SMALL_ LETTER U WITH ACUTE
+ů 9B01 2601 0301 F900 LATIN _SMALL_ LETTER U WITH RING ABOVE
+ü 9B01 2701 0301 FC00 LATIN _SMALL_ LETTER U WITH DIAERESIS
+ű 9B01 2801 0301 FB00 LATIN _SMALL_ LETTER U WITH DOUBLE ACUTE
+select ch,
+hex(weight_string(ch level 1)) l1,
+hex(weight_string(ch level 2)) l2,
+hex(weight_string(ch level 3)) l3,
+hex(weight_string(ch level 4)) l4,
+name from t1 order by concat(ch);
+ch l1 l2 l3 l4 name
+O 9201 2001 0501 4F00 LATIN CAPITAL LETTER O
+Ó 9201 2201 0501 D300 LATIN CAPITAL LETTER O WITH ACUTE
+Ô 9201 2401 0501 D400 LATIN CAPITAL LETTER O WITH CURCUMFLEX
+Ö 9201 2701 0501 D600 LATIN CAPITAL LETTER O WITH DIAERESIS
+Ő 9201 2801 0501 D500 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+u 9B01 2001 0301 7500 LATIN _SMALL_ LETTER U
+ú 9B01 2201 0301 FA00 LATIN _SMALL_ LETTER U WITH ACUTE
+ů 9B01 2601 0301 F900 LATIN _SMALL_ LETTER U WITH RING ABOVE
+ü 9B01 2701 0301 FC00 LATIN _SMALL_ LETTER U WITH DIAERESIS
+ű 9B01 2801 0301 FB00 LATIN _SMALL_ LETTER U WITH DOUBLE ACUTE
+drop table t1;
=== modified file 'mysql-test/r/ctype_sjis.result'
--- a/mysql-test/r/ctype_sjis.result 2008-02-21 05:37:57 +0000
+++ b/mysql-test/r/ctype_sjis.result 2008-07-23 09:43:50 +0000
@@ -231,6 +231,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
sjis_japanese_ci
@@ -294,6 +348,60 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
set collation_connection=sjis_bin;
select @@collation_connection;
@@collation_connection
@@ -316,6 +424,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
sjis_bin
@@ -379,3 +541,57 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_tis620.result'
--- a/mysql-test/r/ctype_tis620.result 2008-05-05 11:22:31 +0000
+++ b/mysql-test/r/ctype_tis620.result 2008-07-23 09:43:50 +0000
@@ -3016,6 +3016,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
tis620_thai_ci
@@ -3156,6 +3210,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
tis620_bin
=== modified file 'mysql-test/r/ctype_uca.result'
--- a/mysql-test/r/ctype_uca.result 2008-03-27 19:02:15 +0000
+++ b/mysql-test/r/ctype_uca.result 2008-07-23 09:43:50 +0000
@@ -2911,6 +2911,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
0E330E4A0E6002090209
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+0E
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0E330E4A02
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+0E330E4A020902090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+0E
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+0E
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select @@collation_connection;
+@@collation_connection
+ucs2_unicode_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+0E230E230E2302090209
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+0E230E2302
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+0E230E23020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
select @@collation_connection;
@@collation_connection
ucs2_unicode_ci
@@ -2963,6 +3089,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
0E330E4A0E6002090209
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+0E
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0E330E4A02
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+0E330E4A020902090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+0E
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+0E
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select @@collation_connection;
+@@collation_connection
+utf8_unicode_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+0E230E230E2302090209
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+0E230E2302
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+0E230E23020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
select @@collation_connection;
@@collation_connection
utf8_unicode_ci
@@ -3051,6 +3303,96 @@ hex(weight_string(cast(_latin1 0xDF6368
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
0FEA0FEA0EE20209
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+0EE20FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+0FEA0FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
set @@collation_connection=ucs2_czech_ci;
select @@collation_connection;
@@collation_connection
@@ -3109,6 +3451,96 @@ hex(weight_string(cast(_latin1 0xDF6368
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
0FEA0FEA0EE20209
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+0EE20FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+0FEA0FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
select hex(weight_string(_utf8 0xF0908080 /* U+10000 */ collate utf8_unicode_ci));
hex(weight_string(_utf8 0xF0908080 /* U+10000 */ collate utf8_unicode_ci))
FFFD
=== modified file 'mysql-test/r/ctype_ucs.result'
--- a/mysql-test/r/ctype_ucs.result 2008-07-22 09:25:46 +0000
+++ b/mysql-test/r/ctype_ucs.result 2008-07-23 09:43:50 +0000
@@ -1179,6 +1179,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00410042004300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0041
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+004100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00410042002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0041
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+004100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00410042004300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0041
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+004100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00410042004300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+ucs2_general_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
ucs2_general_ci
@@ -1231,6 +1357,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00610062006300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0061
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+006100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00610062002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0061
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+006100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00610062006300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0061
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+006100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00610062006300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+ucs2_bin
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
ucs2_bin
=== modified file 'mysql-test/r/ctype_ujis.result'
--- a/mysql-test/r/ctype_ujis.result 2008-02-21 05:37:57 +0000
+++ b/mysql-test/r/ctype_ujis.result 2008-07-23 09:43:50 +0000
@@ -2400,6 +2400,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
ujis_japanese_ci
@@ -2463,6 +2517,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
ujis_japanese_ci
@@ -2496,6 +2604,60 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8EA18EA120
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8EA18EA1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
select collation(cast(0x8FA2C3 as char));
collation(cast(0x8FA2C3 as char))
ujis_japanese_ci
@@ -2529,6 +2691,60 @@ hex(weight_string(cast(0x408FA2C38FA2C38
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
40408FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0))
+8FA2C38FA2C320202020202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
set collation_connection=ujis_bin;
select @@collation_connection;
@@collation_connection
@@ -2551,6 +2767,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select @@collation_connection;
@@collation_connection
ujis_bin
@@ -2614,6 +2884,60 @@ hex(weight_string(cast(0x40A1A1A1A1A1A1
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
4040A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 2, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 2, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 2, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 2, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 2, 0xC0))
+A1A1A1A120
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 2, 0xC0))
+A1A1A1A1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 3, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 3, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 3, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 3, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 3, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 3, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 1, 4, 0xC0))
+A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 2, 4, 0xC0))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 3, 4, 0xC0))
+A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 4, 4, 0xC0))
+A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char), 5, 4, 0xC0))
+A1A1A1A1A1
+select hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0xA1A1A1A1A1A1 as char),25, 4, 0xC0))
+A1A1A1A1A1A120202020202020202020202020202020202020
select collation(cast(0xA1A1 as char));
collation(cast(0xA1A1 as char))
ujis_bin
@@ -2647,6 +2971,60 @@ hex(weight_string(cast(0x408EA18EA18EA1
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
40408EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 2, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 2, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 2, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 2, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 2, 0xC0))
+8EA18EA120
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 2, 0xC0))
+8EA18EA1202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 3, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 3, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 3, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 3, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 3, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 3, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 1, 4, 0xC0))
+8E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 2, 4, 0xC0))
+8EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 3, 4, 0xC0))
+8EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 4, 4, 0xC0))
+8EA18EA1
+select hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char), 5, 4, 0xC0))
+8EA18EA18E
+select hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8EA18EA18EA1 as char),25, 4, 0xC0))
+8EA18EA18EA120202020202020202020202020202020202020
select collation(cast(0x8FA2C3 as char));
collation(cast(0x8FA2C3 as char))
ujis_bin
@@ -2680,3 +3058,57 @@ hex(weight_string(cast(0x408FA2C38FA2C38
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
40408FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 2, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 2, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 2, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 2, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 2, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 2, 0xC0))
+8FA2C38FA2C320202020202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 3, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 3, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 3, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 3, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 3, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 3, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 1, 4, 0xC0))
+8F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 2, 4, 0xC0))
+8FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 3, 4, 0xC0))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 4, 4, 0xC0))
+8FA2C38F
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char), 5, 4, 0xC0))
+8FA2C38FA2
+select hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x8FA2C38FA2C38FA2C3 as char),25, 4, 0xC0))
+8FA2C38FA2C38FA2C320202020202020202020202020202020
=== modified file 'mysql-test/r/ctype_utf16.result'
--- a/mysql-test/r/ctype_utf16.result 2008-07-22 09:25:46 +0000
+++ b/mysql-test/r/ctype_utf16.result 2008-07-23 09:43:50 +0000
@@ -797,6 +797,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00410042004300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0041
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+004100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00410042002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0041
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+004100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00410042004300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0041
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+004100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00410042004300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf16_general_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select hex(weight_string(_utf16 0xD800DC00));
hex(weight_string(_utf16 0xD800DC00))
FFFD
@@ -855,6 +981,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00610062006300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0061
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+006100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00610062002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0061
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+006100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00610062006300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0061
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+006100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00610062006300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf16_bin
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
utf16_bin
=== modified file 'mysql-test/r/ctype_utf16_uca.result'
--- a/mysql-test/r/ctype_utf16_uca.result 2008-03-18 03:20:22 +0000
+++ b/mysql-test/r/ctype_utf16_uca.result 2008-07-23 09:43:50 +0000
@@ -2344,6 +2344,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
0E330E4A0E6002090209
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+0E
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0E330E4A02
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+0E330E4A020902090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+0E
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+0E
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select @@collation_connection;
+@@collation_connection
+utf16_unicode_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+0E230E230E2302090209
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+0E230E2302
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+0E230E23020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
select hex(weight_string(_utf16 0xD800DC00 collate utf16_unicode_ci));
hex(weight_string(_utf16 0xD800DC00 collate utf16_unicode_ci))
FFFD
@@ -2438,6 +2564,96 @@ hex(weight_string(cast(_latin1 0xDF6368
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
0FEA0FEA0EE20209
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+0EE20FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+0FEA0FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
set collation_connection=utf16_unicode_ci;
drop table if exists t1;
create table t1 as
=== modified file 'mysql-test/r/ctype_utf32.result'
--- a/mysql-test/r/ctype_utf32.result 2008-07-22 09:25:46 +0000
+++ b/mysql-test/r/ctype_utf32.result 2008-07-23 09:43:50 +0000
@@ -788,6 +788,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00410042004300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0041
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+004100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00410042002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0041
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+004100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00410042004300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0041
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+004100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00410042004300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf32_general_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select hex(weight_string(_utf32 0x10000));
hex(weight_string(_utf32 0x10000))
FFFD
@@ -846,6 +972,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00610062006300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0061
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+006100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00610062002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0061
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+006100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00610062006300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0061
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+006100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00610062006300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf32_bin
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
utf32_bin
=== modified file 'mysql-test/r/ctype_utf32_uca.result'
--- a/mysql-test/r/ctype_utf32_uca.result 2008-03-18 03:20:22 +0000
+++ b/mysql-test/r/ctype_utf32_uca.result 2008-07-23 09:43:50 +0000
@@ -2344,6 +2344,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
0E330E4A0E6002090209
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+0E
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0E330E4A02
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+0E330E4A020902090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+0E
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+0E
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0E33
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+0E330E
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+0E330E4A
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0E330E4A0E
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+0E330E4A0E6002090209020902090209020902090209020902
+select @@collation_connection;
+@@collation_connection
+utf32_unicode_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+0E230E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+0E230E230E2302090209
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+0E230E2302
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+0E230E23020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+0E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+0E230E
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+0E230E23
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+0E230E230E
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+0E230E230E2302090209020902090209020902090209020902
select hex(weight_string(_utf32 0x10000 collate utf32_unicode_ci));
hex(weight_string(_utf32 0x10000 collate utf32_unicode_ci))
FFFD
@@ -2438,6 +2564,96 @@ hex(weight_string(cast(_latin1 0xDF6368
select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)));
hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4)))
0FEA0FEA0EE20209
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 2, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 2, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 2, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 2, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 2, 0xC0))
+0EE20FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 3, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 3, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 3, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 3, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 3, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 1, 4, 0xC0))
+0E
+select hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 2, 4, 0xC0))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 3, 4, 0xC0))
+0EE20F
+select hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char), 4, 4, 0xC0))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x6368DF as char),25, 4, 0xC0))
+0EE20FEA0FEA02090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 2,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 2,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 2,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 2,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 2,0xC0))
+0FEA0FEA020902090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 3,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 3,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 3,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 3,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 3,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 1, 4,0xC0))
+0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 2, 4,0xC0))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 3, 4,0xC0))
+0FEA0F
+select hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char), 4, 4,0xC0))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0));
+hex(weight_string(cast(_latin1 0xDF6368 as char),25, 4,0xC0))
+0FEA0FEA0EE202090209020902090209020902090209020902
set collation_connection=utf32_unicode_ci;
drop table if exists t1;
create table t1 as
=== modified file 'mysql-test/r/ctype_utf8.result'
--- a/mysql-test/r/ctype_utf8.result 2008-06-04 13:20:03 +0000
+++ b/mysql-test/r/ctype_utf8.result 2008-07-23 09:43:50 +0000
@@ -2049,6 +2049,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00410042004300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0041
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+004100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00410042002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0041
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+004100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00410042004300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0041
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+004100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00410042
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0041004200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00410042004300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf8_general_ci
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
utf8_general_ci
@@ -2101,6 +2227,132 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
00610062006300200020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+00
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+0061
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+006100
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+00610062002000200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+00
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+0061
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+006100
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+00610062006300200020002000200020002000200020002000
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+00
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+0061
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+006100
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+00610062
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+0061006200
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+00610062006300200020002000200020002000200020002000
+select @@collation_connection;
+@@collation_connection
+utf8_bin
+select hex(weight_string(cast(_latin1 0x80 as char)));
+hex(weight_string(cast(_latin1 0x80 as char)))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char)));
+hex(weight_string(cast(_latin1 0x808080 as char)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(2)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(2)))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(3)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(3)))
+20AC20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char) as char(5)));
+hex(weight_string(cast(_latin1 0x808080 as char) as char(5)))
+20AC20AC20AC00200020
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0))
+20AC20AC00
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0))
+20AC20AC002000200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
+select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0))
+20
+select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0))
+20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0))
+20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0))
+20AC20AC
+select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0))
+20AC20AC20
+select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0));
+hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0))
+20AC20AC20AC00200020002000200020002000200020002000
select @@collation_connection;
@@collation_connection
utf8_bin
=== modified file 'mysql-test/r/partition_pruning.result'
--- a/mysql-test/r/partition_pruning.result 2008-07-22 10:51:13 +0000
+++ b/mysql-test/r/partition_pruning.result 2008-07-23 13:17:13 +0000
@@ -342,7 +342,7 @@ id select_type table partitions type pos
explain partitions
select * from t1 X, t1 Y where X.a = Y.a and (X.a=1 or X.a=2);
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE X p1,p2 ALL a NULL NULL NULL 4 Using where
+1 SIMPLE X p1,p2 ALL a NULL NULL NULL 2 Using where
1 SIMPLE Y p1,p2 ref a a 4 test.X.a 2
drop table t1;
create table t1 (a int) partition by hash(a) partitions 20;
=== modified file 'mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result'
--- a/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result 2008-03-27 19:02:15 +0000
+++ b/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result 2008-07-23 09:43:50 +0000
@@ -11541,6 +11541,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
4142432020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+41
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+4142
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+414220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+41422020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+4142202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+41422020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+41
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+4142
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+414243
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+41424320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+41
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+4142
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+414243
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+41424320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+4142432020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+41424320202020202020202020202020202020202020202020
select collation(cast(0x8140 as char));
collation(cast(0x8140 as char))
cp932_japanese_ci
@@ -11574,6 +11628,60 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
set collation_connection=cp932_bin;
select @@collation_connection;
@@collation_connection
@@ -11596,6 +11704,60 @@ hex(weight_string('abc' as char(3)))
select hex(weight_string('abc' as char(5)));
hex(weight_string('abc' as char(5)))
6162632020
+select hex(weight_string('abc', 1, 2, 0xC0));
+hex(weight_string('abc', 1, 2, 0xC0))
+61
+select hex(weight_string('abc', 2, 2, 0xC0));
+hex(weight_string('abc', 2, 2, 0xC0))
+6162
+select hex(weight_string('abc', 3, 2, 0xC0));
+hex(weight_string('abc', 3, 2, 0xC0))
+616220
+select hex(weight_string('abc', 4, 2, 0xC0));
+hex(weight_string('abc', 4, 2, 0xC0))
+61622020
+select hex(weight_string('abc', 5, 2, 0xC0));
+hex(weight_string('abc', 5, 2, 0xC0))
+6162202020
+select hex(weight_string('abc',25, 2, 0xC0));
+hex(weight_string('abc',25, 2, 0xC0))
+61622020202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 3, 0xC0));
+hex(weight_string('abc', 1, 3, 0xC0))
+61
+select hex(weight_string('abc', 2, 3, 0xC0));
+hex(weight_string('abc', 2, 3, 0xC0))
+6162
+select hex(weight_string('abc', 3, 3, 0xC0));
+hex(weight_string('abc', 3, 3, 0xC0))
+616263
+select hex(weight_string('abc', 4, 3, 0xC0));
+hex(weight_string('abc', 4, 3, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 3, 0xC0));
+hex(weight_string('abc', 5, 3, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 3, 0xC0));
+hex(weight_string('abc',25, 3, 0xC0))
+61626320202020202020202020202020202020202020202020
+select hex(weight_string('abc', 1, 4, 0xC0));
+hex(weight_string('abc', 1, 4, 0xC0))
+61
+select hex(weight_string('abc', 2, 4, 0xC0));
+hex(weight_string('abc', 2, 4, 0xC0))
+6162
+select hex(weight_string('abc', 3, 4, 0xC0));
+hex(weight_string('abc', 3, 4, 0xC0))
+616263
+select hex(weight_string('abc', 4, 4, 0xC0));
+hex(weight_string('abc', 4, 4, 0xC0))
+61626320
+select hex(weight_string('abc', 5, 4, 0xC0));
+hex(weight_string('abc', 5, 4, 0xC0))
+6162632020
+select hex(weight_string('abc',25, 4, 0xC0));
+hex(weight_string('abc',25, 4, 0xC0))
+61626320202020202020202020202020202020202020202020
select collation(cast(0x8140 as char));
collation(cast(0x8140 as char))
cp932_bin
@@ -11629,3 +11791,57 @@ hex(weight_string(cast(0x40814081408140
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
40408140
+select hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 2, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 2, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 2, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 2, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 2, 0xC0))
+8140814020
+select hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 2, 0xC0))
+81408140202020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 3, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 3, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 3, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 3, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 3, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 3, 0xC0))
+81408140814020202020202020202020202020202020202020
+select hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 1, 4, 0xC0))
+81
+select hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 2, 4, 0xC0))
+8140
+select hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 3, 4, 0xC0))
+814081
+select hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 4, 4, 0xC0))
+81408140
+select hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char), 5, 4, 0xC0))
+8140814081
+select hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0));
+hex(weight_string(cast(0x814081408140 as char),25, 4, 0xC0))
+81408140814020202020202020202020202020202020202020
=== modified file 'mysql-test/t/ctype_cp1250_ch.test'
--- a/mysql-test/t/ctype_cp1250_ch.test 2008-03-27 19:02:15 +0000
+++ b/mysql-test/t/ctype_cp1250_ch.test 2008-07-23 09:43:50 +0000
@@ -78,6 +78,7 @@ set names cp1250 collate cp1250_czech_cs
--source include/ctype_pad_space.inc
--source include/ctype_filesort.inc
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_chde.inc
--source include/weight_string_l1.inc
--source include/weight_string_l2.inc
=== modified file 'mysql-test/t/ctype_latin1.test'
--- a/mysql-test/t/ctype_latin1.test 2007-07-21 07:14:04 +0000
+++ b/mysql-test/t/ctype_latin1.test 2008-07-23 09:43:50 +0000
@@ -132,18 +132,22 @@ select hex(cast(_ascii 0x7f as char(1) c
set @@collation_connection=latin1_swedish_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=latin1_bin;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=latin1_general_cs;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=binary;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set names latin1;
=== modified file 'mysql-test/t/ctype_latin1_de.test'
--- a/mysql-test/t/ctype_latin1_de.test 2008-02-27 10:04:05 +0000
+++ b/mysql-test/t/ctype_latin1_de.test 2008-07-23 09:43:50 +0000
@@ -148,6 +148,7 @@ drop table t1;
set @@collation_connection=latin1_german2_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
select hex(weight_string('�));
select hex(weight_string('�);
=== modified file 'mysql-test/t/ctype_latin2_ch.test'
--- a/mysql-test/t/ctype_latin2_ch.test 2008-01-10 11:51:02 +0000
+++ b/mysql-test/t/ctype_latin2_ch.test 2008-07-23 09:43:50 +0000
@@ -93,3 +93,44 @@ hex(weight_string(ch level 4)) l4,
name from t1 order by l1, l2, l3, l4;
drop table t1;
+#
+# Bug#33791 Wrong ORDER BY with latin2_czech_cs
+#
+set names utf8;
+create table t1 (
+ch varchar(1),
+name varchar(64)
+) character set latin2 collate latin2_czech_cs;
+insert into t1 values (0x4F,'LATIN CAPITAL LETTER O');
+insert into t1 values (0xD3,'LATIN CAPITAL LETTER O WITH ACUTE');
+insert into t1 values (0xD4,'LATIN CAPITAL LETTER O WITH CURCUMFLEX');
+insert into t1 values (0xD6,'LATIN CAPITAL LETTER O WITH DIAERESIS');
+insert into t1 values (0xD5,'LATIN CAPITAL LETTER O WITH DOUBLE ACUTE');
+insert into t1 values (0x75,'LATIN _SMALL_ LETTER U');
+insert into t1 values (0xFA,'LATIN _SMALL_ LETTER U WITH ACUTE');
+insert into t1 values (0xF9,'LATIN _SMALL_ LETTER U WITH RING ABOVE');
+insert into t1 values (0xFC,'LATIN _SMALL_ LETTER U WITH DIAERESIS');
+insert into t1 values (0xFB,'LATIN _SMALL_ LETTER U WITH DOUBLE ACUTE');
+# Testing order by Field_varchar
+select ch,
+ hex(weight_string(ch level 1)) l1,
+ hex(weight_string(ch level 2)) l2,
+ hex(weight_string(ch level 3)) l3,
+ hex(weight_string(ch level 4)) l4,
+ name from t1 order by ch;
+alter table t1 modify ch char(1), modify name char(64);
+# Testing order by Field_char
+select ch,
+ hex(weight_string(ch level 1)) l1,
+ hex(weight_string(ch level 2)) l2,
+ hex(weight_string(ch level 3)) l3,
+ hex(weight_string(ch level 4)) l4,
+ name from t1 order by ch;
+# Testing order by Item
+select ch,
+ hex(weight_string(ch level 1)) l1,
+ hex(weight_string(ch level 2)) l2,
+ hex(weight_string(ch level 3)) l3,
+ hex(weight_string(ch level 4)) l4,
+ name from t1 order by concat(ch);
+drop table t1;
=== modified file 'mysql-test/t/ctype_uca.test'
--- a/mysql-test/t/ctype_uca.test 2008-03-27 10:09:24 +0000
+++ b/mysql-test/t/ctype_uca.test 2008-07-23 09:43:50 +0000
@@ -549,10 +549,12 @@ set names utf8;
set collation_connection=ucs2_unicode_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=utf8_unicode_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=utf8_czech_ci;
=== modified file 'mysql-test/t/ctype_ucs.test'
--- a/mysql-test/t/ctype_ucs.test 2008-07-22 09:25:46 +0000
+++ b/mysql-test/t/ctype_ucs.test 2008-07-23 09:43:50 +0000
@@ -649,10 +649,12 @@ select hex(char(0x41 using ucs2));
set collation_connection=ucs2_general_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set collation_connection=ucs2_bin;
--- source include/weight_string.inc
+--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
#
=== modified file 'mysql-test/t/ctype_utf16.test'
--- a/mysql-test/t/ctype_utf16.test 2008-07-22 09:25:46 +0000
+++ b/mysql-test/t/ctype_utf16.test 2008-07-23 09:43:50 +0000
@@ -502,12 +502,14 @@ drop table t1;
set collation_connection=utf16_general_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
select hex(weight_string(_utf16 0xD800DC00));
select hex(weight_string(_utf16 0xD800DC01));
--source include/weight_string_l1.inc
set collation_connection=utf16_bin;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set names latin1;
=== modified file 'mysql-test/t/ctype_utf16_uca.test'
--- a/mysql-test/t/ctype_utf16_uca.test 2007-12-06 07:42:19 +0000
+++ b/mysql-test/t/ctype_utf16_uca.test 2008-07-23 09:43:50 +0000
@@ -277,6 +277,7 @@ DROP TABLE IF EXISTS t1;
set collation_connection=utf16_unicode_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
select hex(weight_string(_utf16 0xD800DC00 collate utf16_unicode_ci));
select hex(weight_string(_utf16 0xD800DC01 collate utf16_unicode_ci));
--source include/weight_string_l1.inc
=== modified file 'mysql-test/t/ctype_utf32.test'
--- a/mysql-test/t/ctype_utf32.test 2008-07-22 09:25:46 +0000
+++ b/mysql-test/t/ctype_utf32.test 2008-07-23 09:43:50 +0000
@@ -546,12 +546,14 @@ drop table t1;
set collation_connection=utf32_general_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
select hex(weight_string(_utf32 0x10000));
select hex(weight_string(_utf32 0x10001));
--source include/weight_string_l1.inc
set collation_connection=utf32_bin;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set names latin1;
=== modified file 'mysql-test/t/ctype_utf32_uca.test'
--- a/mysql-test/t/ctype_utf32_uca.test 2007-12-06 07:42:19 +0000
+++ b/mysql-test/t/ctype_utf32_uca.test 2008-07-23 09:43:50 +0000
@@ -278,6 +278,7 @@ DROP TABLE IF EXISTS t1;
set collation_connection=utf32_unicode_ci;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
select hex(weight_string(_utf32 0x10000 collate utf32_unicode_ci));
select hex(weight_string(_utf32 0x10001 collate utf32_unicode_ci));
--source include/weight_string_l1.inc
=== modified file 'mysql-test/t/ctype_utf8.test'
--- a/mysql-test/t/ctype_utf8.test 2008-06-04 13:20:03 +0000
+++ b/mysql-test/t/ctype_utf8.test 2008-07-23 09:43:50 +0000
@@ -1502,10 +1502,12 @@ DROP TABLE t1;
set names utf8;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
set @@collation_connection=utf8_bin;
--source include/weight_string.inc
+--source include/weight_string_euro.inc
--source include/weight_string_l1.inc
#
=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def 2008-07-23 15:20:38 +0000
+++ b/mysql-test/t/disabled.def 2008-07-23 15:21:42 +0000
@@ -19,7 +19,6 @@ ctype_create : Bug#32965 main.ct
backup_no_engine : Bug#36021 2008-04-13 rsomla server crashes when openning table with unknown storage engine
backup_tablespace : Bug #36973 backup_tablespace.test fails in pushbuild
csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables
-ctype_latin2_ch : BUG #33791 2008-01-18 mats Wrong ORDER BY with latin2_czech_cs
query_cache_wlock_invalidate_func: Bug#35390 causes not deterministic results.
thread_cache_size_func: BUG#35988, BUG#36733 Due to not deterministic results
cast : Bug#35594 2008-03-27 main.cast fails on Windows2003-64
=== modified file 'mysys/my_uuid.c'
--- a/mysys/my_uuid.c 2008-07-18 13:30:53 +0000
+++ b/mysys/my_uuid.c 2008-07-23 11:28:20 +0000
@@ -145,12 +145,12 @@ void my_uuid(uchar *to)
*/
if (nanoseq)
{
- longlong delta;
+ uint delta;
DBUG_ASSERT((tv > uuid_time) && (nanoseq > 0));
/*
-1 so we won't make tv= uuid_time for nanoseq >= (tv - uuid_time)
*/
- delta= (longlong) min(nanoseq, tv - uuid_time -1);
+ delta= min(nanoseq, (uint)(tv - uuid_time -1));
tv-= delta;
nanoseq-= delta;
}
=== modified file 'sql/field.cc'
--- a/sql/field.cc 2008-07-22 10:57:48 +0000
+++ b/sql/field.cc 2008-07-23 11:28:20 +0000
@@ -6518,9 +6518,13 @@ int Field_string::cmp(const uchar *a_ptr
void Field_string::sort_string(uchar *to,uint length)
{
- IF_DBUG(uint tmp=) my_strnxfrm(field_charset,
- to, length,
- ptr, field_length);
+ IF_DBUG(uint tmp=) field_charset->coll->strnxfrm(field_charset,
+ to, length,
+ field_length /
+ field_charset->mbmaxlen,
+ ptr, field_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(tmp == length);
}
@@ -7009,9 +7013,14 @@ void Field_varstring::sort_string(uchar
length-= length_bytes;
}
- tot_length= my_strnxfrm(field_charset,
- to, length, ptr + length_bytes,
- tot_length);
+ tot_length= field_charset->coll->strnxfrm(field_charset,
+ to, length,
+ field_length /
+ field_charset->mbmaxlen,
+ ptr + length_bytes,
+ tot_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(tot_length == length);
}
@@ -7850,9 +7859,11 @@ void Field_blob::sort_string(uchar *to,u
}
}
memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
-
- blob_length=my_strnxfrm(field_charset,
- to, length, blob, blob_length);
+ blob_length= field_charset->coll->strnxfrm(field_charset,
+ to, length, length,
+ blob, blob_length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(blob_length == length);
}
}
=== modified file 'sql/filesort.cc'
--- a/sql/filesort.cc 2008-07-17 19:55:18 +0000
+++ b/sql/filesort.cc 2008-07-23 09:43:50 +0000
@@ -832,8 +832,11 @@ static void make_sortkey(register SORTPA
memcpy(param->tmp_buffer,from,length);
from=param->tmp_buffer;
}
- tmp_length= my_strnxfrm(cs,to,sort_field->length,
- (uchar*) from, length);
+ tmp_length= cs->coll->strnxfrm(cs, to, sort_field->length,
+ item->max_length / cs->mbmaxlen,
+ (uchar*) from, length,
+ MY_STRXFRM_PAD_WITH_SPACE |
+ MY_STRXFRM_PAD_TO_MAXLEN);
DBUG_ASSERT(tmp_length == sort_field->length);
}
else
=== modified file 'sql/handler.cc'
--- a/sql/handler.cc 2008-07-09 07:12:43 +0000
+++ b/sql/handler.cc 2008-07-23 11:28:20 +0000
@@ -1630,23 +1630,23 @@ bool mysql_xa_recover(THD *thd)
@return
always 0
*/
-static my_bool release_temporary_latches(THD *thd, plugin_ref plugin,
- void *unused)
-{
- handlerton *hton= plugin_data(plugin, handlerton *);
-
- if (hton->state == SHOW_OPTION_YES && hton->release_temporary_latches)
- hton->release_temporary_latches(hton, thd);
-
- return FALSE;
-}
-
int ha_release_temporary_latches(THD *thd)
{
- plugin_foreach(thd, release_temporary_latches, MYSQL_STORAGE_ENGINE_PLUGIN,
- NULL);
+ Ha_trx_info *info;
+ /*
+ Note that below we assume that only transactional storage engines
+ may need release_temporary_latches(). If this will ever become false,
+ we could iterate on thd->open_tables instead (and remove duplicates
+ as if (!seen[hton->slot]) { seen[hton->slot]=1; ... }).
+ */
+ for (info= thd->transaction.stmt.ha_list; info; info= info->next())
+ {
+ handlerton *hton= info->ht();
+ if (hton && hton->release_temporary_latches)
+ hton->release_temporary_latches(hton, thd);
+ }
return 0;
}
=== modified file 'sql/item_strfunc.cc'
--- a/sql/item_strfunc.cc 2008-07-16 10:39:12 +0000
+++ b/sql/item_strfunc.cc 2008-07-23 09:43:50 +0000
@@ -2982,7 +2982,13 @@ void Item_func_weight_string::fix_length
CHARSET_INFO *cs= args[0]->collation.collation;
collation.set(&my_charset_bin, args[0]->collation.derivation);
flags= my_strxfrm_flag_normalize(flags, cs->levels_for_order);
- max_length= cs->mbmaxlen * max(args[0]->max_length, nweights);
+ /*
+ Use result_length if it was given explicitly in constructor,
+ otherwise calculate max_length using argument's max_length
+ and "nweights".
+ */
+ max_length= result_length ? result_length :
+ cs->mbmaxlen * max(args[0]->max_length, nweights);
maybe_null= 1;
}
@@ -2999,8 +3005,14 @@ String *Item_func_weight_string::val_str
!(res= args[0]->val_str(str)))
goto nl;
- tmp_length= cs->coll->strnxfrmlen(cs, cs->mbmaxlen *
- max(res->length(), nweights));
+ /*
+ Use result_length if it was given in constructor
+ explicitly, otherwise calculate result length
+ from argument and "nweights".
+ */
+ tmp_length= result_length ? result_length :
+ cs->coll->strnxfrmlen(cs, cs->mbmaxlen *
+ max(res->length(), nweights));
if (tmp_value.alloc(tmp_length))
goto nl;
=== modified file 'sql/item_strfunc.h'
--- a/sql/item_strfunc.h 2008-05-29 15:44:11 +0000
+++ b/sql/item_strfunc.h 2008-07-23 09:43:50 +0000
@@ -787,9 +787,16 @@ class Item_func_weight_string :public It
String tmp_value;
uint flags;
uint nweights;
+ uint result_length;
public:
- Item_func_weight_string(Item *a, uint nweights_arg, uint flags_arg)
- :Item_str_func(a) { nweights= nweights_arg; flags= flags_arg; }
+ Item_func_weight_string(Item *a, uint result_length_arg,
+ uint nweights_arg, uint flags_arg)
+ :Item_str_func(a)
+ {
+ nweights= nweights_arg;
+ flags= flags_arg;
+ result_length= result_length_arg;
+ }
const char *func_name() const { return "weight_string"; }
String *val_str(String *);
void fix_length_and_dec();
=== modified file 'sql/sql_yacc.yy'
--- a/sql/sql_yacc.yy 2008-07-18 13:30:53 +0000
+++ b/sql/sql_yacc.yy 2008-07-23 09:43:50 +0000
@@ -7473,17 +7473,22 @@ function_call_conflict:
| WEEK_SYM '(' expr ',' expr ')'
{ $$= new (YYTHD->mem_root) Item_func_week($3,$5); }
| WEIGHT_STRING_SYM '(' expr opt_ws_levels ')'
- { $$= new (YYTHD->mem_root) Item_func_weight_string($3, 0, $4); }
+ { $$= new (YYTHD->mem_root) Item_func_weight_string($3, 0, 0, $4); }
| WEIGHT_STRING_SYM '(' expr AS CHAR_SYM ws_nweights opt_ws_levels ')'
{
$$= new (YYTHD->mem_root)
- Item_func_weight_string($3, $6, $7|MY_STRXFRM_PAD_WITH_SPACE);
+ Item_func_weight_string($3, 0, $6,
+ $7 | MY_STRXFRM_PAD_WITH_SPACE);
}
| WEIGHT_STRING_SYM '(' expr AS BINARY ws_nweights ')'
{
$3= create_func_char_cast(YYTHD, $3, $6, &my_charset_bin);
$$= new (YYTHD->mem_root)
- Item_func_weight_string($3, $6, MY_STRXFRM_PAD_WITH_SPACE);
+ Item_func_weight_string($3, 0, $6, MY_STRXFRM_PAD_WITH_SPACE);
+ }
+ | WEIGHT_STRING_SYM '(' expr ',' ulong_num ',' ulong_num ',' ulong_num ')'
+ {
+ $$= new (YYTHD->mem_root) Item_func_weight_string($3, $5, $7, $9);
}
| geometry_function
{
=== modified file 'strings/ctype-czech.c'
--- a/strings/ctype-czech.c 2008-01-10 11:51:02 +0000
+++ b/strings/ctype-czech.c 2008-07-23 09:43:50 +0000
@@ -483,7 +483,12 @@ my_strnxfrm_czech(CHARSET_INFO * cs __a
*dst++= level < 3 ? 1 : 0;
}
}
-
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ {
+ uint fill_length= de - dst;
+ cs->cset->fill(cs, (char*) dst, fill_length, 0);
+ dst= de;
+ }
return dst - dst0;
}
=== modified file 'strings/ctype-mb.c'
--- a/strings/ctype-mb.c 2008-02-16 09:08:10 +0000
+++ b/strings/ctype-mb.c 2008-07-23 09:43:50 +0000
@@ -525,26 +525,22 @@ my_strnxfrm_mb(CHARSET_INFO *cs,
A thourough loop, checking all possible limits:
"se", "nweights" and "de".
*/
- for (; src < se && nweights; nweights--)
+ for (; src < se && nweights && dst < de; nweights--)
{
int chlen;
if (*src < 128 ||
!(chlen= cs->cset->ismbchar(cs, (const char*) src, (const char*) se)))
{
/* Single byte character */
- if (dst >= de)
- break;
*dst++= sort_order ? sort_order[*src++] : *src++;
}
else
{
/* Multi-byte character */
- if (dst + chlen > de)
- break;
- *dst++= *src++;
- *dst++= *src++;
- if (chlen == 3)
- *dst++= *src++;
+ int len= (dst + chlen <= de) ? chlen : de - dst;
+ memcpy(dst, src, len);
+ dst+= len;
+ src+= len;
}
}
=== modified file 'strings/ctype-simple.c'
--- a/strings/ctype-simple.c 2008-02-16 09:08:10 +0000
+++ b/strings/ctype-simple.c 2008-07-23 09:43:50 +0000
@@ -1805,7 +1805,8 @@ uint my_strxfrm_flag_normalize(uint flag
if (!(flags & MY_STRXFRM_LEVEL_ALL))
{
static uint def_level_flags[]= {0, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F };
- uint flag_pad= flags & MY_STRXFRM_PAD_WITH_SPACE;
+ uint flag_pad= flags &
+ (MY_STRXFRM_PAD_WITH_SPACE | MY_STRXFRM_PAD_TO_MAXLEN);
flags= def_level_flags[maximum] | flag_pad;
}
else
@@ -1814,7 +1815,8 @@ uint my_strxfrm_flag_normalize(uint flag
uint flag_lev= flags & MY_STRXFRM_LEVEL_ALL;
uint flag_dsc= (flags >> MY_STRXFRM_DESC_SHIFT) & MY_STRXFRM_LEVEL_ALL;
uint flag_rev= (flags >> MY_STRXFRM_REVERSE_SHIFT) & MY_STRXFRM_LEVEL_ALL;
- uint flag_pad= flags & MY_STRXFRM_PAD_WITH_SPACE;
+ uint flag_pad= flags &
+ (MY_STRXFRM_PAD_WITH_SPACE | MY_STRXFRM_PAD_TO_MAXLEN);
/*
If any level number is greater than the maximum,
@@ -1910,6 +1912,12 @@ my_strxfrm_pad_desc_and_reverse(CHARSET_
frmend+= fill_length;
}
my_strxfrm_desc_and_reverse(str, frmend, flags, level);
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && frmend < strend)
+ {
+ uint fill_length= strend - frmend;
+ cs->cset->fill(cs, (char*) frmend, fill_length, cs->pad_char);
+ frmend= strend;
+ }
return frmend - str;
}
=== modified file 'strings/ctype-tis620.c'
--- a/strings/ctype-tis620.c 2007-06-21 09:59:30 +0000
+++ b/strings/ctype-tis620.c 2008-07-23 09:43:50 +0000
@@ -637,14 +637,21 @@ size_t my_strnxfrm_tis620(CHARSET_INFO *
uchar *dst, size_t dstlen, uint nweights,
const uchar *src, size_t srclen, uint flags)
{
- size_t len;
+ size_t len, dstlen0= dstlen;
len= (uint) (strmake((char*) dst, (char*) src, min(dstlen, srclen)) -
(char*) dst);
len= thai2sortable(dst, len);
set_if_smaller(dstlen, nweights);
set_if_smaller(len, dstlen);
- return my_strxfrm_pad_desc_and_reverse(cs, dst, dst + len, dst + dstlen,
- dstlen - len, flags, 0);
+ len= my_strxfrm_pad_desc_and_reverse(cs, dst, dst + len, dst + dstlen,
+ dstlen - len, flags, 0);
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && len < dstlen0)
+ {
+ uint fill_length= dstlen0 - len;
+ cs->cset->fill(cs, (char*) dst + len, fill_length, cs->pad_char);
+ len= dstlen0;
+ }
+ return len;
}
=== modified file 'strings/ctype-uca.c'
--- a/strings/ctype-uca.c 2008-03-18 03:20:22 +0000
+++ b/strings/ctype-uca.c 2008-07-23 09:43:50 +0000
@@ -7297,7 +7297,7 @@ static size_t my_strnxfrm_uca(CHARSET_IN
const uchar *src, size_t srclen, uint flags)
{
uchar *d0= dst;
- uchar *de= dst + (dstlen & (size_t) ~1); /* add even length for easier code */
+ uchar *de= dst + dstlen;
int s_res;
my_uca_scanner scanner;
scanner_handler->init(&scanner, cs, src, srclen);
@@ -7306,7 +7306,8 @@ static size_t my_strnxfrm_uca(CHARSET_IN
(s_res= scanner_handler->next(&scanner)) > 0 ; nweights--)
{
*dst++= s_res >> 8;
- *dst++= s_res & 0xFF;
+ if (dst < de)
+ *dst++= s_res & 0xFF;
}
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
@@ -7320,6 +7321,16 @@ static size_t my_strnxfrm_uca(CHARSET_IN
}
}
my_strxfrm_desc_and_reverse(d0, dst, flags, 0);
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ {
+ s_res= cs->sort_order_big[0][0x20 * cs->sort_order[0]];
+ for ( ; dst < de; )
+ {
+ *dst++= s_res >> 8;
+ if (dst < de)
+ *dst++= s_res & 0xFF;
+ }
+ }
return dst - d0;
}
=== modified file 'strings/ctype-ucs2.c'
--- a/strings/ctype-ucs2.c 2008-07-15 10:59:07 +0000
+++ b/strings/ctype-ucs2.c 2008-07-23 09:43:50 +0000
@@ -1362,40 +1362,6 @@ my_strnncollsp_utf16(CHARSET_INFO *cs,
}
-static size_t
-my_strnxfrm_utf16(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- uchar *de= dst + dstlen;
- uchar *d0= dst;
- const uchar *se= src + srclen;
- MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
- NULL : cs->caseinfo;
- LINT_INIT(wc);
-
- for (; src < se && dst < de && nweights; nweights--)
- {
- if ((res= my_utf16_uni(cs,&wc, src, se))<0)
- break;
- src+= res;
-
- if (uni_plane)
- my_tosort_utf16(uni_plane, &wc);
-
- if (dst + 2 >= de)
- break;
-
- *dst++= (uchar) (wc >> 8);
- *dst++= (uchar) (wc & 0xFF);
- }
- return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de,
- nweights, flags, 0);
-}
-
-
static uint
my_ismbchar_utf16(CHARSET_INFO *cs __attribute__((unused)),
const char *b __attribute__((unused)),
@@ -1607,22 +1573,6 @@ my_strnncollsp_utf16_bin(CHARSET_INFO *c
}
-static size_t
-my_strnxfrm_utf16_bin(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- /* TODO */
- uint frmlen;
- if ((frmlen= min(dstlen, nweights * 2)) > srclen)
- frmlen= srclen;
- if (dst != src)
- memcpy(dst, src, frmlen);
- return my_strxfrm_pad_desc_and_reverse(cs, dst, dst + frmlen, dst + dstlen,
- nweights - frmlen / 2, flags, 0);
-}
-
-
static void
my_hash_sort_utf16_bin(CHARSET_INFO *cs __attribute__((unused)),
const uchar *key, size_t len,ulong *nr1, ulong *nr2)
@@ -1740,7 +1690,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf16,
my_strnncollsp_utf16,
- my_strnxfrm_utf16,
+ my_strnxfrm_unicode,
my_strnxfrmlen_simple,
my_like_range_utf16,
my_wildcmp_utf16_ci,
@@ -1756,7 +1706,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf16_bin,
my_strnncollsp_utf16_bin,
- my_strnxfrm_utf16_bin,
+ my_strnxfrm_unicode,
my_strnxfrmlen_simple,
my_like_range_utf16,
my_wildcmp_utf16_bin,
@@ -2192,39 +2142,6 @@ my_strxfrm_pad_desc_and_reverse_utf32(CH
}
-static size_t
-my_strnxfrm_utf32(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- uchar *de= dst + dstlen;
- uchar *d0= dst;
- const uchar *se= src + srclen;
- MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
- NULL : cs->caseinfo;
-
- for (; src < se && dst < de && nweights; nweights--)
- {
- if ((res= my_utf32_uni(cs,&wc, src, se))<0)
- break;
- src+= res;
-
- if (uni_plane)
- my_tosort_utf32(uni_plane, &wc);
-
- if (dst + 2 >= de)
- break;
-
- *dst++= (uchar) (wc >> 8);
- *dst++= (uchar) (wc & 0xFF);
- }
- return my_strxfrm_pad_desc_and_reverse_utf32(cs, d0, dst, de,
- nweights, flags, 0);
-}
-
-
static uint
my_ismbchar_utf32(CHARSET_INFO *cs __attribute__((unused)),
const char *b __attribute__((unused)),
@@ -2842,7 +2759,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf32,
my_strnncollsp_utf32,
- my_strnxfrm_utf32,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf32,
my_like_range_utf32,
my_wildcmp_utf32_ci,
@@ -2858,7 +2775,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf32_bin,
my_strnncollsp_utf32_bin,
- my_strnxfrm_utf32,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf32,
my_like_range_utf32,
my_wildcmp_utf32_bin,
@@ -3244,41 +3161,6 @@ static int my_strnncollsp_ucs2(CHARSET_I
}
-static size_t
-my_strnxfrm_ucs2(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- int plane;
- uchar *de= dst + dstlen;
- uchar *d0= dst;
- const uchar *se= src + srclen;
- MY_UNICASE_INFO **uni_plane= cs->caseinfo;
-
- for (; src < se && dst < de && nweights; nweights--)
- {
- if ((res=my_ucs2_uni(cs,&wc, src, se))<0)
- {
- break;
- }
- src+=res;
- srclen-=res;
-
- plane=(wc>>8) & 0xFF;
- wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
-
- if ((res=my_uni_ucs2(cs,wc,dst,de)) <0)
- {
- break;
- }
- dst+=res;
- }
- return my_strxfrm_pad_desc_and_reverse(cs, d0, dst, de, nweights, flags, 0);
-}
-
-
static uint my_ismbchar_ucs2(CHARSET_INFO *cs __attribute__((unused)),
const char *b __attribute__((unused)),
const char *e __attribute__((unused)))
@@ -3429,21 +3311,6 @@ static int my_strnncollsp_ucs2_bin(CHARS
static
-size_t my_strnxfrm_ucs2_bin(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- uint frmlen;
- if ((frmlen= min(dstlen, nweights * 2)) > srclen)
- frmlen= srclen;
- if (dst != src)
- memcpy(dst, src, frmlen);
- return my_strxfrm_pad_desc_and_reverse(cs, dst, dst + frmlen, dst + dstlen,
- nweights - frmlen / 2, flags, 0);
-}
-
-
-static
void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)),
const uchar *key, size_t len,ulong *nr1, ulong *nr2)
{
@@ -3594,7 +3461,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_ucs2,
my_strnncollsp_ucs2,
- my_strnxfrm_ucs2,
+ my_strnxfrm_unicode,
my_strnxfrmlen_simple,
my_like_range_ucs2,
my_wildcmp_ucs2_ci,
@@ -3610,7 +3477,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_ucs2_bin,
my_strnncollsp_ucs2_bin,
- my_strnxfrm_ucs2_bin,
+ my_strnxfrm_unicode,
my_strnxfrmlen_simple,
my_like_range_ucs2,
my_wildcmp_ucs2_bin,
=== modified file 'strings/ctype-utf8.c'
--- a/strings/ctype-utf8.c 2008-06-04 13:20:03 +0000
+++ b/strings/ctype-utf8.c 2008-07-23 09:43:50 +0000
@@ -1894,6 +1894,130 @@ int my_wildcmp_unicode(CHARSET_INFO *cs,
return (str != str_end ? 1 : 0);
}
+
+/**
+ Pad buffer with weights for space characters.
+
+ @details
+ This functions fills the buffer pointed by "str"
+ with weights of space character. Not more than
+ "nweights" weights are put. If at some iteration
+ step only a half of weight can fit
+ (which is possible if buffer length is an odd number)
+ then a half of this weight is put - this gives
+ a little bit better ORDER BY result for long strings.
+
+ @str Buffer
+ @strend End of buffer
+ @nweights Number of weights
+
+ @return Result length
+*/
+
+static size_t
+my_strxfrm_pad_nweights_unicode(uchar *str, uchar *strend, size_t nweights)
+{
+ uchar *str0;
+ DBUG_ASSERT(str && str <= strend);
+ for (str0= str; str < strend && nweights; nweights--)
+ {
+ *str++= 0x00;
+ if (str < strend)
+ *str++= 0x20;
+ }
+ return str - str0;
+}
+
+
+/**
+ Pad buffer with weights for space characters.
+
+ @details
+ This functions fills the buffer pointed by "str"
+ with weights of space character. Putting half of weight
+ (when buffer length is an odd number) is OK.
+
+ @str Buffer
+ @strend End of buffer
+
+ @return Result length
+*/
+
+static size_t
+my_strxfrm_pad_unicode(uchar *str, uchar *strend)
+{
+ uchar *str0= str;
+ DBUG_ASSERT(str && str <= strend);
+ for ( ; str < strend ; )
+ {
+ *str++= 0x00;
+ if (str < strend)
+ *str++= 0x20;
+ }
+ return str - str0;
+}
+
+
+#define REPLACEMENT_CHAR 0xFFFD;
+
+
+static inline void
+my_tosort_unicode(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
+{
+ int page= *wc >> 8;
+ if (page < 256)
+ {
+ if (uni_plane[page])
+ *wc= uni_plane[page][*wc & 0xFF].sort;
+ }
+ else
+ {
+ *wc= REPLACEMENT_CHAR;
+ }
+}
+
+
+size_t
+my_strnxfrm_unicode(CHARSET_INFO *cs,
+ uchar *dst, size_t dstlen, uint nweights,
+ const uchar *src, size_t srclen, uint flags)
+{
+ my_wc_t wc;
+ int res;
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
+ NULL : cs->caseinfo;
+ LINT_INIT(wc);
+ DBUG_ASSERT(src);
+
+ for (; dst < de && nweights; nweights--)
+ {
+ if ((res= cs->cset->mb_wc(cs, &wc, src, se)) <= 0)
+ break;
+ src+= res;
+
+ if (uni_plane)
+ my_tosort_unicode(uni_plane, &wc);
+
+ *dst++= (uchar) (wc >> 8);
+ if (dst < de)
+ *dst++= (uchar) (wc & 0xFF);
+ }
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ dst+= my_strxfrm_pad_nweights_unicode(dst, de, nweights);
+
+ my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
+
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ dst+= my_strxfrm_pad_unicode(dst, de);
+ return dst - dst0;
+}
+
+
+
#endif
@@ -2186,9 +2310,6 @@ my_wc_mb_utf8mb4_no_range(CHARSET_INFO *
}
-#define REPLACEMENT_CHAR 0xFFFD;
-
-
static inline void
my_tolower_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
{
@@ -2207,22 +2328,6 @@ my_toupper_utf8mb4(MY_UNICASE_INFO **uni
}
-static inline void
-my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
-{
- int page= *wc >> 8;
- if (page < 256)
- {
- if (uni_plane[page])
- *wc= uni_plane[page][*wc & 0xFF].sort;
- }
- else
- {
- *wc= REPLACEMENT_CHAR;
- }
-}
-
-
static size_t
my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen,
char *dst, size_t dstlen)
@@ -2273,7 +2378,7 @@ my_hash_sort_utf8mb4(CHARSET_INFO *cs, c
while ((res= my_mb_wc_utf8mb4(cs, &wc, (uchar*) s, (uchar*) e)) > 0)
{
- my_tosort_utf8mb4(uni_plane, &wc);
+ my_tosort_unicode(uni_plane, &wc);
my_hash_add(n1, n2, (uint) (wc & 0xFF));
my_hash_add(n1, n2, (uint) (wc >> 8) & 0xFF);
if (wc > 0xFFFF)
@@ -2403,8 +2508,8 @@ my_strnncoll_utf8mb4(CHARSET_INFO *cs,
return bincmp_utf8mb4(s, se, t, te);
}
- my_tosort_utf8mb4(uni_plane, &s_wc);
- my_tosort_utf8mb4(uni_plane, &t_wc);
+ my_tosort_unicode(uni_plane, &s_wc);
+ my_tosort_unicode(uni_plane, &t_wc);
if ( s_wc != t_wc )
{
@@ -2473,8 +2578,8 @@ my_strnncollsp_utf8mb4(CHARSET_INFO *cs,
return bincmp_utf8mb4(s, se, t, te);
}
- my_tosort_utf8mb4(uni_plane, &s_wc);
- my_tosort_utf8mb4(uni_plane, &t_wc);
+ my_tosort_unicode(uni_plane, &s_wc);
+ my_tosort_unicode(uni_plane, &t_wc);
if ( s_wc != t_wc )
{
@@ -2614,51 +2719,6 @@ my_strnxfrmlen_utf8mb4(CHARSET_INFO *cs
}
-static size_t
-my_strnxfrm_utf8mb4(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- uchar *dst0= dst;
- uchar *de= dst + dstlen;
- uchar *de_beg= de - 1;
- const uchar *se = src + srclen;
- MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
- NULL : cs->caseinfo;
-
- for (; dst < de_beg && nweights; nweights--)
- {
- if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
- break;
- src+=res;
-
- if (uni_plane)
- my_tosort_utf8mb4(uni_plane, &wc);
-
- *dst++= (uchar)(wc >> 8);
- *dst++= (uchar)(wc & 0xFF);
-
- }
-
- if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
- {
- /* Fill the tail with keys for space character */
- for (; dst < de_beg && nweights; nweights--)
- {
- *dst++= 0x00;
- *dst++= 0x20;
- }
-
- if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
- *dst++= 0x00;
- }
- my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
- return dst - dst0;
-}
-
-
static uint
my_ismbchar_utf8mb4(CHARSET_INFO *cs, const char *b, const char *e)
{
@@ -2690,7 +2750,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf8mb4,
my_strnncollsp_utf8mb4,
- my_strnxfrm_utf8mb4,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb4,
my_like_range_mb,
my_wildcmp_utf8mb4,
@@ -2706,7 +2766,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_mb_bin,
my_strnncollsp_mb_bin,
- my_strnxfrm_utf8mb4,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb4,
my_like_range_mb,
my_wildcmp_mb_bin,
@@ -3540,90 +3600,6 @@ my_strnxfrmlen_utf8mb3(CHARSET_INFO *cs
}
-static size_t
-my_strnxfrm_utf8mb3(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- int plane;
- uchar *dst0= dst;
- uchar *de= dst + dstlen;
- uchar *de_beg= de - 1;
- const uchar *se = src + srclen;
- MY_UNICASE_INFO **uni_plane= cs->caseinfo;
-
- for (; dst < de_beg && nweights; nweights--)
- {
- if ((res= my_mb_wc_utf8mb3(cs,&wc, src, se)) <= 0)
- break;
- src+=res;
-
- plane=(wc>>8) & 0xFF;
- wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
-
- *dst++= (uchar)(wc >> 8);
- *dst++= (uchar)(wc & 0xFF);
-
- }
-
- if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
- {
- /* Fill the tail with keys for space character */
- for (; dst < de_beg && nweights; nweights--)
- {
- *dst++= 0x00;
- *dst++= 0x20;
- }
-
- if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
- *dst++= 0x00;
- }
- my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
- return dst - dst0;
-}
-
-
-static size_t
-my_strnxfrm_utf8mb3_bin(CHARSET_INFO *cs,
- uchar *dst, size_t dstlen, uint nweights,
- const uchar *src, size_t srclen, uint flags)
-{
- my_wc_t wc;
- int res;
- uchar *dst0= dst;
- uchar *de= dst + dstlen;
- uchar *de_beg= de - 1;
- const uchar *se= src + srclen;
-
- for (; dst < de_beg && nweights; nweights--)
- {
- if ((res= my_mb_wc_utf8mb3(cs, &wc, src, se)) <= 0)
- break;
- src+=res;
-
- *dst++= (uchar)(wc >> 8);
- *dst++= (uchar)(wc & 0xFF);
- }
-
- if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
- {
- /* Fill the tail with keys for space character */
- for (; dst < de_beg && nweights; nweights--)
- {
- *dst++= 0x00;
- *dst++= 0x20;
- }
-
- if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
- *dst++= 0x00;
- }
- my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
- return dst - dst0;
-}
-
-
static uint
my_ismbchar_utf8mb3(CHARSET_INFO *cs, const char *b, const char *e)
{
@@ -3661,7 +3637,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf8mb3,
my_strnncollsp_utf8mb3,
- my_strnxfrm_utf8mb3,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb3,
my_like_range_mb,
my_wildcmp_utf8mb3,
@@ -3677,7 +3653,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_mb_bin,
my_strnncollsp_mb_bin,
- my_strnxfrm_utf8mb3_bin,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb3,
my_like_range_mb,
my_wildcmp_mb_bin,
@@ -3934,7 +3910,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf8mb3_cs,
my_strnncollsp_utf8mb3_cs,
- my_strnxfrm_utf8mb3,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb3,
my_like_range_simple,
my_wildcmp_mb,
@@ -5200,7 +5176,7 @@ static MY_COLLATION_HANDLER my_collation
NULL, /* init */
my_strnncoll_utf8mb3,
my_strnncollsp_utf8mb3,
- my_strnxfrm_utf8mb3,
+ my_strnxfrm_unicode,
my_strnxfrmlen_utf8mb3,
my_like_range_mb,
my_wildcmp_utf8mb3,
=== modified file 'strings/ctype-win1250ch.c'
--- a/strings/ctype-win1250ch.c 2007-07-20 11:06:04 +0000
+++ b/strings/ctype-win1250ch.c 2008-07-23 09:43:50 +0000
@@ -580,6 +580,12 @@ my_strnxfrm_win1250ch(CHARSET_INFO * cs
my_strxfrm_desc_and_reverse(dstl, dst, flags, level);
}
}
+ if ((flags & MY_STRXFRM_PAD_TO_MAXLEN) && dst < de)
+ {
+ uint fill_length= de - dst;
+ cs->cset->fill(cs, (char*) dst, fill_length, 0);
+ dst= de;
+ }
return dst - dst0;
}
| Thread |
|---|
| • bzr commit into mysql-6.0-backup branch (horst:2741) | Horst Hunger | 23 Jul |