Below is the list of changes that have just been committed into a local
5.1 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2474 07/03/16 16:08:31 bar@stripped +72 -0
WL #3664 - strnxfrm() changes for prefix keys and NOPAD
with partial
WL #3716 - WEIGHT_STRING function
The latter is an excellent tool to cover #3664 with tests,
so it is implemented in the same patch.
mysql-test/include/weight_string_l4.inc
1.1 07/03/16 16:08:27 bar@stripped +10 -0
New BitKeeper file ``mysql-test/include/weight_string_l4.inc''
mysql-test/include/weight_string_l3.inc
1.1 07/03/16 16:08:27 bar@stripped +10 -0
New BitKeeper file ``mysql-test/include/weight_string_l3.inc''
mysql-test/include/weight_string_l2.inc
1.1 07/03/16 16:08:27 bar@stripped +10 -0
New BitKeeper file ``mysql-test/include/weight_string_l2.inc''
mysql-test/include/weight_string_l14.inc
1.1 07/03/16 16:08:27 bar@stripped +37 -0
New BitKeeper file ``mysql-test/include/weight_string_l14.inc''
mysql-test/include/weight_string_l4.inc
1.0 07/03/16 16:08:27 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l4.inc
mysql-test/include/weight_string_l3.inc
1.0 07/03/16 16:08:27 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l3.inc
mysql-test/include/weight_string_l2.inc
1.0 07/03/16 16:08:27 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l2.inc
mysql-test/include/weight_string_l14.inc
1.0 07/03/16 16:08:27 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l14.inc
mysql-test/include/weight_string_l12.inc
1.1 07/03/16 16:08:26 bar@stripped +5 -0
New BitKeeper file ``mysql-test/include/weight_string_l12.inc''
mysql-test/include/weight_string_l1.inc
1.1 07/03/16 16:08:26 bar@stripped +10 -0
New BitKeeper file ``mysql-test/include/weight_string_l1.inc''
mysql-test/include/weight_string_chde.inc
1.1 07/03/16 16:08:26 bar@stripped +21 -0
New BitKeeper file ``mysql-test/include/weight_string_chde.inc''
mysql-test/include/weight_string_A1A1.inc
1.1 07/03/16 16:08:26 bar@stripped +11 -0
New BitKeeper file ``mysql-test/include/weight_string_A1A1.inc''
mysql-test/include/weight_string_l12.inc
1.0 07/03/16 16:08:26 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l12.inc
mysql-test/include/weight_string_l1.inc
1.0 07/03/16 16:08:26 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_l1.inc
mysql-test/include/weight_string_chde.inc
1.0 07/03/16 16:08:26 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_chde.inc
mysql-test/include/weight_string_A1A1.inc
1.0 07/03/16 16:08:26 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_A1A1.inc
mysql-test/include/weight_string_8FA2C3.inc
1.1 07/03/16 16:08:25 bar@stripped +11 -0
New BitKeeper file ``mysql-test/include/weight_string_8FA2C3.inc''
mysql-test/include/weight_string_8EA1.inc
1.1 07/03/16 16:08:25 bar@stripped +11 -0
New BitKeeper file ``mysql-test/include/weight_string_8EA1.inc''
mysql-test/include/weight_string_8140.inc
1.1 07/03/16 16:08:25 bar@stripped +11 -0
New BitKeeper file ``mysql-test/include/weight_string_8140.inc''
mysql-test/include/weight_string.inc
1.1 07/03/16 16:08:25 bar@stripped +10 -0
New BitKeeper file ``mysql-test/include/weight_string.inc''
mysql-test/include/ctype_pad_space.inc
1.1 07/03/16 16:08:25 bar@stripped +5 -0
New BitKeeper file ``mysql-test/include/ctype_pad_space.inc''
strings/ctype-win1250ch.c
1.59 07/03/16 16:08:25 bar@stripped +117 -56
- Adding new parameters
- Removing unesed ifdef/define (leftovers from the original contributed patch)
- Making cp1250_czech_cs "PAD SPACE", like all other MySQL collations.
strings/ctype-utf8.c
1.113 07/03/16 16:08:25 bar@stripped +70 -11
Adding new parameters
strings/ctype-ujis.c
1.75 07/03/16 16:08:25 bar@stripped +19 -2
Adding new parameters
strings/ctype-ucs2.c
1.69 07/03/16 16:08:25 bar@stripped +25 -11
Adding new parameters
mysql-test/include/weight_string_8FA2C3.inc
1.0 07/03/16 16:08:25 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_8FA2C3.inc
mysql-test/include/weight_string_8EA1.inc
1.0 07/03/16 16:08:25 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_8EA1.inc
mysql-test/include/weight_string_8140.inc
1.0 07/03/16 16:08:25 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string_8140.inc
mysql-test/include/weight_string.inc
1.0 07/03/16 16:08:25 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/weight_string.inc
mysql-test/include/ctype_pad_space.inc
1.0 07/03/16 16:08:25 bar@stripped +0 -0
BitKeeper file /home/bar/mysql-5.1-wl3664/mysql-test/include/ctype_pad_space.inc
strings/ctype-uca.c
1.44 07/03/16 16:08:24 bar@stripped +23 -22
Adding new parameters
strings/ctype-tis620.c
1.96 07/03/16 16:08:24 bar@stripped +11 -6
Adding new parameters
strings/ctype-sjis.c
1.94 07/03/16 16:08:24 bar@stripped +42 -18
Adding new parameters
strings/ctype-simple.c
1.86 07/03/16 16:08:24 bar@stripped +9 -4
Adding new parameters
strings/ctype-mb.c
1.57 07/03/16 16:08:24 bar@stripped +60 -42
Adding new parameters
strings/ctype-latin1.c
1.53 07/03/16 16:08:24 bar@stripped +21 -13
Adding new parameters
strings/ctype-gbk.c
1.83 07/03/16 16:08:24 bar@stripped +49 -20
Adding new parameters
strings/ctype-gb2312.c
1.69 07/03/16 16:08:24 bar@stripped +19 -2
Adding new parameters
strings/ctype-eucjpms.c
1.18 07/03/16 16:08:24 bar@stripped +19 -2
Adding new parameters
strings/ctype-euc_kr.c
1.72 07/03/16 16:08:24 bar@stripped +19 -2
Adding new parameters
strings/ctype-czech.c
1.65 07/03/16 16:08:24 bar@stripped +288 -149
Adding new parameters
- Making latin_czech_cs "PAD SPACE", like all other MySQL collations
- Removing various unesed ifdef/define (leftovers from contributed patch)
- Some other changes, see "In Matrch 2007..." comment for details.
strings/ctype-cp932.c
1.17 07/03/16 16:08:24 bar@stripped +42 -17
Adding new parameters
strings/ctype-bin.c
1.76 07/03/16 16:08:24 bar@stripped +17 -22
Adding new parameters
strings/ctype-big5.c
1.92 07/03/16 16:08:24 bar@stripped +50 -20
Adding new parameters
storage/ndb/src/common/util/NdbSqlUtil.cpp
1.38 07/03/16 16:08:24 bar@stripped +4 -2
Pass new parameters.
sql/sql_yacc.yy
1.550 07/03/16 16:08:24 bar@stripped +52 -1
Adding WEIGHT_STRING() syntax
sql/lex.h
1.171 07/03/16 16:08:24 bar@stripped +2 -0
Adding new parser symbols
sql/item_strfunc.h
1.126 07/03/16 16:08:24 bar@stripped +15 -0
Prototype for the WEIGHT_STRING function
sql/item_strfunc.cc
1.314 07/03/16 16:08:24 bar@stripped +39 -0
Implementation of the WEIGHT_STRING() function.
mysql-test/t/ctype_utf8.test
1.104 07/03/16 16:08:24 bar@stripped +7 -0
Adding tests
mysql-test/t/ctype_ujis.test
1.20 07/03/16 16:08:24 bar@stripped +14 -0
Adding tests
mysql-test/t/ctype_ucs.test
1.51 07/03/16 16:08:24 bar@stripped +7 -0
Adding tests
mysql-test/t/ctype_uca.test
1.16 07/03/16 16:08:24 bar@stripped +12 -0
Adding tests
mysql-test/t/ctype_tis620.test
1.14 07/03/16 16:08:24 bar@stripped +11 -0
Adding tests
mysql-test/t/ctype_sjis.test
1.13 07/03/16 16:08:23 bar@stripped +10 -0
Adding tests
mysql-test/t/ctype_latin2_ch.test
1.3 07/03/16 16:08:23 bar@stripped +14 -1
Adding tests
mysql-test/t/ctype_latin2.test
1.4 07/03/16 16:08:23 bar@stripped +8 -0
Adding tests
mysql-test/t/ctype_latin1_de.test
1.27 07/03/16 16:08:23 bar@stripped +22 -0
Adding tests
mysql-test/t/ctype_latin1.test
1.11 07/03/16 16:08:23 bar@stripped +13 -0
Adding tests
mysql-test/t/ctype_gbk.test
1.6 07/03/16 16:08:23 bar@stripped +13 -0
Adding tests
mysql-test/t/ctype_gb2312.test
1.2 07/03/16 16:08:23 bar@stripped +9 -0
Adding tests
mysql-test/t/ctype_euckr.test
1.2 07/03/16 16:08:23 bar@stripped +9 -0
Adding tests
mysql-test/t/ctype_eucjpms.test
1.10 07/03/16 16:08:23 bar@stripped +13 -0
Adding tests
mysql-test/t/ctype_cp1250_ch.test
1.9 07/03/16 16:08:23 bar@stripped +10 -0
Adding tests
mysql-test/t/ctype_big5.test
1.12 07/03/16 16:08:23 bar@stripped +9 -0
Adding tests
mysql-test/r/ctype_utf8.result
1.114 07/03/16 16:08:23 bar@stripped +63 -0
Adding tests
mysql-test/r/ctype_ujis.result
1.20 07/03/16 16:08:23 bar@stripped +261 -0
Adding tests
mysql-test/r/ctype_ucs.result
1.55 07/03/16 16:08:23 bar@stripped +63 -0
Adding tests
mysql-test/r/ctype_uca.result
1.18 07/03/16 16:08:23 bar@stripped +180 -0
Adding tests
mysql-test/r/ctype_tis620.result
1.14 07/03/16 16:08:23 bar@stripped +75 -0
Adding tests
mysql-test/r/ctype_sjis.result
1.13 07/03/16 16:08:23 bar@stripped +128 -0
Adding tests
mysql-test/r/ctype_latin2_ch.result
1.3 07/03/16 16:08:23 bar@stripped +331 -0
Adding tests
mysql-test/r/ctype_latin2.result
1.3 07/03/16 16:08:23 bar@stripped +42 -1
Adding tests
mysql-test/r/ctype_latin1_de.result
1.26 07/03/16 16:08:23 bar@stripped +83 -0
Adding tests
mysql-test/r/ctype_latin1.result
1.10 07/03/16 16:08:23 bar@stripped +125 -0
Adding tests
mysql-test/r/ctype_gbk.result
1.5 07/03/16 16:08:23 bar@stripped +260 -0
Adding tests
mysql-test/r/ctype_gb2312.result
1.3 07/03/16 16:08:23 bar@stripped +128 -0
Adding tests
mysql-test/r/ctype_euckr.result
1.3 07/03/16 16:08:23 bar@stripped +128 -0
Adding tests
mysql-test/r/ctype_eucjpms.result
1.7 07/03/16 16:08:23 bar@stripped +261 -0
Adding tests
mysql-test/r/ctype_cp1250_ch.result
1.10 07/03/16 16:08:23 bar@stripped +187 -0
Adding tests
mysql-test/r/ctype_big5.result
1.12 07/03/16 16:08:23 bar@stripped +128 -0
Adding tests
mysql-test/r/binlog_stm_ctype_cp932.result
1.16 07/03/16 16:08:23 bar@stripped +129 -0
Adding tests
mysql-test/r/binlog_row_ctype_cp932.result
1.8 07/03/16 16:08:23 bar@stripped +129 -0
Adding tests
mysql-test/extra/binlog_tests/ctype_cp932.test
1.18 07/03/16 16:08:23 bar@stripped +10 -0
Adding tests
include/m_ctype.h
1.135 07/03/16 16:08:23 bar@stripped +41 -5
Adding flags for levels and for "PAD WITH SPACE".
Adding "flangs" and "nweights" parameters.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bar
# Host: bar.myoffice.izhnet.ru
# Root: /home/bar/mysql-5.1-wl3664
--- 1.134/include/m_ctype.h 2007-01-29 03:51:37 +04:00
+++ 1.135/include/m_ctype.h 2007-03-16 16:08:23 +04:00
@@ -86,6 +86,15 @@
#define MY_CS_HIDDEN 2048 /* don't display in SHOW */
#define MY_CHARSET_UNDEFINED 0
+/* Flags for strxfrm */
+#define MY_STRXFRM_LEVEL1 0x01 /* for primary weights */
+#define MY_STRXFRM_LEVEL2 0x02 /* for secondary weights */
+#define MY_STRXFRM_LEVEL3 0x04 /* for tertiary weights */
+#define MY_STRXFRM_LEVEL4 0x08 /* fourth level weights */
+#define MY_STRXFRM_LEVEL5 0x10 /* fivth level weights */
+#define MY_STRXFRM_LEVEL6 0x20 /* sixth level weights */
+#define MY_STRXFRM_LEVEL_ALL 0x3F /* Bit OR for the above six */
+#define MY_STRXFRM_PAD_WITH_SPACE 0x40 /* if pad result with spaces */
typedef struct my_uni_idx_st
{
@@ -131,7 +140,8 @@
const uchar *, uint, const uchar *, uint,
my_bool diff_if_only_endspace_difference);
int (*strnxfrm)(struct charset_info_st *,
- uchar *, uint, const uchar *, uint);
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags);
uint (*strnxfrmlen)(struct charset_info_st *, uint);
my_bool (*like_range)(struct charset_info_st *,
const char *s, uint s_length,
@@ -157,7 +167,6 @@
my_bool (*propagate)(struct charset_info_st *cs, const uchar *str, uint len);
} MY_COLLATION_HANDLER;
-extern MY_COLLATION_HANDLER my_collation_mb_bin_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler;
@@ -300,8 +309,9 @@
extern CHARSET_INFO my_charset_filename;
/* declarations for simple charsets */
-extern int my_strnxfrm_simple(CHARSET_INFO *, uchar *, uint, const uchar *,
- uint);
+extern int my_strnxfrm_simple(CHARSET_INFO *,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags);
uint my_strnxfrmlen_simple(CHARSET_INFO *, uint);
extern int my_strnncoll_simple(CHARSET_INFO *, const uchar *, uint,
const uchar *, uint, my_bool);
@@ -436,6 +446,31 @@
const char *s, uint s_length,
my_match_t *match, uint nmatch);
+int my_strnncoll_mb_bin(CHARSET_INFO * cs,
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen,
+ my_bool t_is_prefix);
+
+int my_strnncollsp_mb_bin(CHARSET_INFO *cs,
+ const uchar *a, uint a_length,
+ const uchar *b, uint b_length,
+ my_bool diff_if_only_endspace_difference);
+
+int my_wildcmp_mb_bin(CHARSET_INFO *cs,
+ const char *str,const char *str_end,
+ const char *wildstr,const char *wildend,
+ int escape, int w_one, int w_many);
+
+int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
+ const char *s, const char *t);
+
+void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, uint len,ulong *nr1, ulong *nr2);
+
+int my_strnxfrm_mb(CHARSET_INFO *,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags);
+
int my_wildcmp_unicode(CHARSET_INFO *cs,
const char *str, const char *str_end,
const char *wildstr, const char *wildend,
@@ -485,7 +520,8 @@
#define my_binary_compare(s) ((s)->state & MY_CS_BINSORT)
#define use_strnxfrm(s) ((s)->state & MY_CS_STRNXFRM)
-#define my_strnxfrm(s, a, b, c, d) ((s)->coll->strnxfrm((s), (a), (b), (c), (d)))
+#define my_strnxfrm(cs, d, dl, s, sl) \
+ ((cs)->coll->strnxfrm((cs), (d), (dl), (dl), (s), (sl), MY_STRXFRM_PAD_WITH_SPACE))
#define my_strnncoll(s, a, b, c, d) ((s)->coll->strnncoll((s), (a), (b), (c), (d), 0))
#define my_like_range(s, a, b, c, d, e, f, g, h, i, j) \
((s)->coll->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h), (i), (j)))
--- 1.313/sql/item_strfunc.cc 2007-03-07 13:24:11 +04:00
+++ 1.314/sql/item_strfunc.cc 2007-03-16 16:08:24 +04:00
@@ -2687,6 +2687,45 @@
}
+void Item_func_weight_string::fix_length_and_dec()
+{
+ collation.set(&my_charset_bin, DERIVATION_COERCIBLE);
+ max_length= max(args[0]->max_length * 3, nweights * 3);
+ maybe_null= 1;
+}
+
+
+/* Return a weight_string according to collation */
+String *Item_func_weight_string::val_str(String *str)
+{
+ String *res;
+ CHARSET_INFO *cs= args[0]->collation.collation;
+ uint tmp_length, frm_length;
+ DBUG_ASSERT(fixed == 1);
+
+ if (args[0]->result_type() != STRING_RESULT ||
+ !(res= args[0]->val_str(str)))
+ goto nl;
+
+ tmp_length= cs->coll->strnxfrmlen(cs, 2* max(res->length(),
+ nweights*cs->mbmaxlen));
+ if (tmp_value.alloc(tmp_length))
+ goto nl;
+
+ frm_length= cs->coll->strnxfrm(cs,
+ (uchar*) tmp_value.ptr(), tmp_length,
+ nweights ? nweights : tmp_length,
+ (const uchar*) res->ptr(), res->length(),
+ flags);
+ tmp_value.length(frm_length);
+ return &tmp_value;
+
+nl:
+ null_value= 1;
+ return 0;
+}
+
+
String *Item_func_hex::val_str(String *str)
{
String *res;
--- 1.125/sql/item_strfunc.h 2007-01-24 17:55:03 +04:00
+++ 1.126/sql/item_strfunc.h 2007-03-16 16:08:24 +04:00
@@ -782,6 +782,21 @@
table_map not_null_tables() const { return 0; }
};
+
+class Item_func_weight_string :public Item_str_func
+{
+ String tmp_value;
+ uint flags;
+ uint nweights;
+public:
+ Item_func_weight_string(Item *a, uint nweights_arg, uint flags_arg)
+ :Item_str_func(a) { nweights= nweights_arg; flags= flags_arg; }
+ const char *func_name() const { return "weight_string"; }
+ String *val_str(String *);
+ void fix_length_and_dec();
+};
+
+
class Item_func_crc32 :public Item_int_func
{
String value;
--- 1.170/sql/lex.h 2007-02-24 00:48:12 +04:00
+++ 1.171/sql/lex.h 2007-03-16 16:08:24 +04:00
@@ -378,6 +378,7 @@
{ "OUTFILE", SYM(OUTFILE)},
{ "OWNER", SYM(OWNER_SYM)},
{ "PACK_KEYS", SYM(PACK_KEYS_SYM)},
+ { "PAD_WITH_SPACE", SYM(PAD_WITH_SPACE_SYM)},
{ "PARSER", SYM(PARSER_SYM)},
{ "PARTIAL", SYM(PARTIAL)},
{ "PARTITION", SYM(PARTITION_SYM)},
@@ -568,6 +569,7 @@
{ "WAIT", SYM(WAIT_SYM)},
{ "WARNINGS", SYM(WARNINGS)},
{ "WEEK", SYM(WEEK_SYM)},
+ { "WEIGHT_STRING", SYM(WEIGHT_STRING_SYM)},
{ "WHEN", SYM(WHEN_SYM)},
{ "WHERE", SYM(WHERE)},
{ "WHILE", SYM(WHILE_SYM)},
--- 1.549/sql/sql_yacc.yy 2007-03-07 17:08:31 +04:00
+++ 1.550/sql/sql_yacc.yy 2007-03-16 16:08:24 +04:00
@@ -854,6 +854,7 @@
%token OUT_SYM /* SQL-2003-R */
%token OWNER_SYM
%token PACK_KEYS_SYM
+%token PAD_WITH_SPACE_SYM
%token PARAM_MARKER
%token PARSER_SYM
%token PARTIAL /* SQL-2003-N */
@@ -1051,6 +1052,7 @@
%token WAIT_SYM
%token WARNINGS
%token WEEK_SYM
+%token WEIGHT_STRING_SYM
%token WHEN_SYM /* SQL-2003-R */
%token WHERE /* SQL-2003-R */
%token WHILE_SYM
@@ -1116,7 +1118,9 @@
ev_alter_on_schedule_completion opt_ev_rename_to opt_ev_sql_stmt
%type <ulong_num>
- ulong_num real_ulong_num merge_insert_types
+ ulong_num real_ulong_num merge_insert_types
+ ws_nweights opt_ws_pad
+ opt_ws_levels ws_level_list ws_level_range ws_level_list_or_range
%type <ulonglong_number>
ulonglong_num real_ulonglong_num size_number
@@ -4888,6 +4892,44 @@
}
| charset charset_name { Lex->charset=$2; } ;
+ws_nweights:
+ AS CHAR_SYM '(' real_ulong_num ')' { $$= $4; }
+ ;
+
+ws_level_list:
+ real_ulong_num { $$= 1 << (($1 < 1 ? 1 : ($1 > 6 ? 6 : $1)) - 1); }
+ | ws_level_list ',' real_ulong_num
+ { $$|= 1 << (($3 < 1 ? 1 : ($3 > 6 ? 6 : $3)) - 1); }
+ ;
+
+ws_level_range:
+ real_ulong_num '-' real_ulong_num
+ {
+ uint start= $1 < 1 ? 1 : ($1 > 4 ? 4 : $1);
+ uint end= $3 < start ? 1 : ($3 > 4 ? 4 : $3);
+ for ($$= 0; start <= end; start++)
+ $$|= (1 << (start - 1));
+ }
+ ;
+
+ws_level_list_or_range:
+ ws_level_list { $$= $1; }
+ | ws_level_range { $$= $1; }
+ ;
+
+opt_ws_levels:
+ /* empty*/ { $$= 0; }
+ | LEVEL_SYM ws_level_list_or_range
+ {
+ $$= $2;
+ }
+ ;
+
+opt_ws_pad:
+ /* Empty */ { $$= 0; }
+ | PAD_WITH_SPACE_SYM { $$= MY_STRXFRM_PAD_WITH_SPACE; }
+ ;
+
opt_primary:
/* empty */
| PRIMARY_SYM
@@ -6764,6 +6806,13 @@
}
| 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); }
+ | WEIGHT_STRING_SYM '(' expr ws_nweights opt_ws_levels opt_ws_pad ')'
+ {
+ $$= new (YYTHD->mem_root)
+ Item_func_weight_string($3, $4, $5|$6);
+ }
| geometry_function
{
#ifdef HAVE_SPATIAL
@@ -9971,6 +10020,7 @@
| QUARTER_SYM {}
| QUERY_SYM {}
| QUICK {}
+ | PAD_WITH_SPACE_SYM {}
| REBUILD_SYM {}
| RECOVER_SYM {}
| REDO_BUFFER_SIZE_SYM {}
@@ -10046,6 +10096,7 @@
| WARNINGS {}
| WAIT_SYM {}
| WEEK_SYM {}
+ | WEIGHT_STRING_SYM {}
| WORK_SYM {}
| X509_SYM {}
| YEAR_SYM {}
--- 1.91/strings/ctype-big5.c 2006-12-23 23:20:32 +04:00
+++ 1.92/strings/ctype-big5.c 2007-03-16 16:08:24 +04:00
@@ -301,31 +301,44 @@
}
-static int my_strnxfrm_big5(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+static int
+my_strnxfrm_big5(CHARSET_INFO *cs,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uint16 e;
- uint dstlen= len;
-
- len = srclen;
- while (len--)
+ uchar *d0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ const uchar *sort_order= cs->sort_order;
+
+ for ( ; dst < de && src < se && nweights; nweights--)
{
- if ((len > 0) && isbig5code(*src, *(src+1)))
+ if (cs->cset->ismbchar(cs,(const char*) src, (const char*) se))
{
- e = big5strokexfrm((uint16) big5code(*src, *(src+1)));
- *dest++ = big5head(e);
- *dest++ = big5tail(e);
- src +=2;
- len--;
- } else
- *dest++ = sort_order_big5[(uchar) *src++];
+ /*
+ Note, it is safe not to check (src < se)
+ in the code below, because ismbchar() would
+ not return TRUE if src was too short
+ */
+ uint16 e= big5strokexfrm((uint16) big5code(*src, *(src+1)));
+ *dst++= big5head(e);
+ if (dst < de)
+ *dst++= big5tail(e);
+ src+= 2;
+ }
+ else
+ *dst++= sort_order ? sort_order[(uchar)*src++] : *src++;
}
- if (dstlen > srclen)
- bfill(dest, dstlen - srclen, ' ');
- return dstlen;
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ dst+= fill_length;
+ }
+ return dst - d0;
}
+
#if 0
static int my_strcoll_big5(const uchar * s1, const uchar * s2)
{
@@ -6343,6 +6356,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_big5_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_big5_handler=
{
NULL, /* init */
@@ -6436,7 +6466,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_big5_handler,
- &my_collation_mb_bin_handler
+ &my_collation_big5_bin_handler
};
--- 1.64/strings/ctype-czech.c 2006-12-23 23:04:29 +04:00
+++ 1.65/strings/ctype-czech.c 2007-03-16 16:08:24 +04:00
@@ -13,7 +13,8 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-/* File strings/ctype-czech.c for MySQL.
+/*
+ File strings/ctype-czech.c for MySQL.
This file implements the Czech sorting for the MySQL database
server (www.mysql.com). Due to some complicated rules the
@@ -59,23 +60,10 @@
* .configure. strxfrm_multiply_czech=4
*/
-#define SKIP_TRAILING_SPACES 1
-
-#define REAL_MYSQL
-
-#ifdef REAL_MYSQL
-
#include <my_global.h>
#include "m_string.h"
#include "m_ctype.h"
-#else
-
-#include <stdio.h>
-#define uchar unsigned char
-
-#endif
-
#ifdef HAVE_CHARSET_latin2
/*
@@ -83,34 +71,107 @@
below for what are the "special values"
*/
-static uchar * CZ_SORT_TABLE[] = {
- (uchar*) "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\043\044\045\046\047\050\051\052\053\054\000\000\000\000\000\000\000\003\004\377\007\010\011\012\013\015\016\017\020\022\023\024\025\026\027\031\033\034\035\036\037\040\041\000\000\000\000\000\000\003\004\377\007\010\011\012\013\015\016\017\020\022\023\024\025\026\027\031\033\034\035\036\037\040\041\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\021\000\020\032\000\000\032\032\033\042\000\042\042\000\003\000\021\000\020\032\000\000\032\032\033\042\000\042\042\027\003\003\003\003\020\006\006\006\010\010\010\010\015\015\007\007\023\023\024\024\024\024\000\030\034\034\034\034\040\033\000\027\003\003\003\003\020\006\006\006\010\010\010\010\015\015\007\007\023\023\024!
\024\024\024\000\030\034\034\034\034\040\033\000",
- (uchar*) "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\106\107\110\111\112\113\114\115\116\117\000\000\000\000\000\000\000\003\011\377\016\021\026\027\030\032\035\036\037\043\044\047\054\055\056\061\065\070\075\076\077\100\102\000\000\000\000\000\000\003\011\377\016\021\026\027\030\032\035\036\037\043\044\047\054\055\056\061\065\070\075\076\077\100\102\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\042\000\041\063\000\000\062\064\066\104\000\103\105\000\010\000\042\000\041\063\000\000\062\064\066\104\000\103\105\057\004\005\007\006\040\014\015\013\022\025\024\023\033\034\017\020\046\045\050\051\053\052\000\060\072\071\074\073\101\067\000\057\004\005\007\006\040\014\015\013\022\025\024\023\033\034\017\020\046\045\050!
\051\053\052\000\060\072\071\074\073\101\067\000",
-(uchar*) "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\213\214\215\216\217\220\221\222\223\000\000\000\000\000\000\000\004\020\377\032\040\052\054\056\063\071\073\075\105\107\115\127\131\133\141\151\157\171\173\175\177\203\000\000\000\000\000\000\003\017\377\031\037\051\053\055\062\070\072\074\104\106\114\126\130\132\140\150\156\170\172\174\176\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\103\000\101\145\000\000\143\147\153\207\000\205\211\000\015\000\102\000\100\144\000\000\142\146\152\206\000\204\210\135\006\010\014\012\077\026\030\024\042\050\046\044\065\067\034\036\113\111\117\121\125\123\000\137\163\161\167\165\201\155\000\134\005\007\013\011\076\025\027\023\041\047\045\043\064\066\033\035\112\110\116\1!
20\124\122\000\136\162\160\166\164\200\154\000",
-(uchar*) "\264\265\266\267\270\271\272\273\274\002\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\002\230\232\253\324\252\251\234\240\241\261\260\225\262\224\235\212\213\214\215\216\217\220\221\222\223\231\226\244\257\245\227\250\004\020\377\032\040\052\054\056\063\071\073\075\105\107\115\127\131\133\141\151\157\171\173\175\177\203\242\237\243\254\255\233\003\017\377\031\037\051\053\055\062\070\072\074\104\106\114\126\130\132\140\150\156\170\172\174\176\202\246\236\247\256\325\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\326\016\327\103\330\101\145\331\332\143\147\153\207\333\205\211\334\015\335\102\336\100\144\337\340\142\146\152\206\341\204\210\135\006\010\014\012\077\026\030\024\042\050\046\044\065\067\034\036\113\111\117\121\125\123\263\137\163\161\167\165\201\155\342\134\005\007\013\011\076\025\027\023\041\047\045\043\064\066\033\035\112\110\116\1!
20\124\122\343\136\162\160\166\164\200\154\344",
+static const uchar *CZ_SORT_TABLE[]=
+{
+ (const uchar*)
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x42\x43\x44\x45\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x47\x58\x5C\x6A\x77\x6B\x69\x5B\x5E\x5F\x66\x6E\x55\x54\x5A\x67"
+ "\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x57\x56\x71\x72\x73\x59"
+ "\x65\x82\x83\xFF\x86\x87\x88\x89\x8A\x8C\x8D\x8E\x8F\x90\x91\x93"
+ "\x94\x95\x96\x98\x9A\x9C\x9D\x9E\x9F\xA0\xA1\x60\x68\x61\x4B\x52"
+ "\x49\x82\x83\xFF\x86\x87\x88\x89\x8A\x8C\x8D\x8E\x8F\x90\x91\x92"
+ "\x94\x95\x96\x98\x9A\x9B\x9D\x9E\x9F\xA0\xA1\x62\x74\x63\x75\x00"
+ "\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x48\x82\x4C\x8F\x76\x8F\x98\x64\x4E\x99\x98\x9A\xA1\x53\xA2\xA1"
+ "\x6D\x82\x51\x8F\x4A\x8F\x98\x6C\x50\x99\x98\x9A\xA1\x4F\xA2\xA1"
+ "\x96\x82\x82\x82\x82\x8F\x84\x84\x85\x87\x87\x87\x87\x8C\x8C\x86"
+ "\x86\x91\x91\x93\x93\x93\x93\x70\x97\x9C\x9C\x9C\x9C\xA0\x9A\x98"
+ "\x96\x82\x82\x82\x82\x8F\x84\x84\x85\x87\x87\x87\x87\x8C\x8C\x86"
+ "\x86\x91\x91\x92\x92\x92\x92\x6F\x97\x9B\x9B\x9B\x9B\xA0\x9A\x4D",
+
+ (const uchar*)
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
+ "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
+ "\x20\x20\x20\xFF\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
+ "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
+ "\x20\x20\x20\xFF\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
+ "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x00"
+ "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x20\x2B\x20\x2C\x20\x25\x22\x20\x20\x25\x2A\x25\x22\x20\x25\x29"
+ "\x20\x2B\x20\x2C\x20\x25\x22\x20\x20\x25\x2A\x25\x22\x20\x25\x29"
+ "\x22\x22\x24\x23\x27\x22\x22\x2A\x25\x22\x2B\x47\x25\x22\x24\x25"
+ "\x2C\x22\x25\x22\x24\x28\x27\x20\x25\x26\x22\x28\x27\x22\x2A\x21"
+ "\x22\x22\x24\x23\x27\x22\x22\x2A\x25\x22\x2B\x47\x25\x22\x24\x25"
+ "\x2C\x22\x25\x22\x24\x28\x27\x20\x25\x26\x22\x28\x27\x22\x2A\x20",
+
+ (const uchar*)
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x02\x02\x02\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
+ "\x02\x04\x04\xFF\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04"
+ "\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\x02\x02\x02\x02"
+ "\x02\x02\x02\xFF\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x00"
+ "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x1B\x04\x02\x04\x02\x04\x04\x02\x02\x04\x04\x04\x04\x02\x04\x04"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
+ "\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04"
+ "\x04\x04\x04\x04\x04\x04\x04\x02\x04\x04\x04\x04\x04\x04\x04\x02"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"
+ "\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02",
+
+ (const uchar*)
+ "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
+ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
+ "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F"
+ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F"
+ "\x40\x41\x42\xFF\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F"
+ "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F"
+ "\x60\x61\x62\xFF\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F"
+ "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F"
+ "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F"
+ "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F"
+ "\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF"
+ "\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF"
+ "\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"
+ "\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF"
+ "\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF"
+ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
};
/*
- These define the valuse for the double chars that need to be
- sorted as they were single characters -- in Czech these are
- 'ch', 'Ch' and 'CH'.
+ These define the values for the double chars that need to be
+ sorted as they were single characters -- in Czech these are
+ 'ch', 'Ch' and 'CH'.
*/
struct wordvalue
- {
- const char * word;
- uchar * outvalue;
- };
-static struct wordvalue doubles[] = {
- { "ch", (uchar*) "\014\031\057\057" },
- { "Ch", (uchar*) "\014\031\060\060" },
- { "CH", (uchar*) "\014\031\061\061" },
- { "c", (uchar*) "\005\012\021\021" },
- { "C", (uchar*) "\005\012\022\022" },
- };
+{
+ const uchar *word;
+ const uchar *outvalue;
+};
+
+static struct wordvalue doubles[]=
+{
+ { "ch", (const uchar*) "\x8B\x20\x02\x63" },
+ { "Ch", (const uchar*) "\x8B\x20\x03\x43" },
+ { "CH", (const uchar*) "\x8B\x20\x04\x43" },
+ { "c", (const uchar*) "\x84\x20\x02\x63" },
+ { "C", (const uchar*) "\x84\x20\x04\x43" },
+};
+
/*
- Unformal description of the algorithm:
+ Original comments from the contributor:
+
+ Informal description of the algorithm:
We walk the string left to right.
@@ -131,44 +192,96 @@
If the value is space/end of word (2) and we are in the first
or second pass, we skip all characters having value 0 -- 2 and
- switch the passwd.
+ switch the pass.
If it's the compose character (255), we check if the double
exists behind it, find its value.
We append 0 to the end.
----
-
-
+*/
+/*
+ In March 2007 latin2_czech_cs was reworked by Alexander Barkov,
+ to suite other MySQL collations better, and to be Falcon compatible.
+
+ Changes:
+ - Discarded word-by-word comparison on the primary and the secondary level.
+ Comparison is now strictly done level-by-level
+ (like the Unicode Collation Algorithm (UCA) does).
+
+ - Character weights were derived from Unicode 5.0.0 standard.
+ This is to make order of punctuation characters and digits
+ more consistent with all other MySQL collations and UCA.
+
+ The order is now:
+
+ Controls, spaces, punctuations, digits, letters.
+
+ It previously used to be:
+
+ Punctuations, controls, some more punctuations, letters, digits.
+
+ NOTE:
+
+ A minor difference between this implementations and the UCA:
+
+ German "LATIN SMALL LETTER SHARP S" does not expand to "ss".
+ It is instead considered as secondary greater than "LATIN LETTER S",
+ and thus sorted between "LATIN LETTER S" and "LATIN LETTER S WITH ACUTE".
+ This allows to reduce *twice* disk space required for un-indexed
+ ORDER BY (using the filesort method).
+
+ As neither the original version of latin2_czech_cs
+ expanded "SHARP S" to "ss", nor "SHARP S" is a part of Czech alphabet,
+ this behavior should be ok.
+
+ - Collation is now "PAD SPACE", i.e. it ignores trailing spaces,
+ like all other MySQL collations do:
+
+ SELECT 'a '='a' -- returns true.
+
+ - SPACE and TAB characters are not ignorable anymore.
+ Also, they have different weights on primary level,
+ like in all other MySQL collations:
+
+ SELECT 'a\tb' < 'a b' -- returns true,
+
+ - Some other punctuation characters are not ignorable anymore,
+ for better compatibility with UCA and other MySQL collations.
+*/
- */
#define ADD_TO_RESULT(dest, len, totlen, value) \
if ((totlen) < (len)) { dest[totlen] = value; } (totlen++);
#define IS_END(p, src, len) (((char *)p - (char *)src) >= (len))
-#define NEXT_CMP_VALUE(src, p, store, pass, value, len) \
+/*
+ ml - a flag indicating whether automatically
+ switch to the secondary level,
+ or stop on the primary level
+*/
+
+#define NEXT_CMP_VALUE(src, p, pass, value, len, ml) \
while (1) \
{ \
if (IS_END(p, src, len)) \
@@ -176,11 +289,11 @@
/* when we are at the end of string */ \
/* return either 0 for end of string */ \
/* or 1 for end of pass */ \
- value= 0; \
- if (pass != 3) \
+ value= pass < 3 && ml ? 1 : 0; \
+ if (pass != 3 && ml && len > 0) \
{ \
- p= (pass++ == 0) ? store : src; \
- value = 1; \
+ p= src; \
+ pass++; \
} \
break; \
} \
@@ -188,26 +301,6 @@
value = CZ_SORT_TABLE[pass][*p]; \
if (value == 0) \
{ p++; continue; } /* ignore value */ \
- if (value == 2) /* space */ \
- { \
- const uchar * tmp; \
- const uchar * runner = ++p; \
- while (!(IS_END(runner, src, len)) && (CZ_SORT_TABLE[pass][*runner] == 2)) \
- runner++; /* skip all spaces */ \
- if (IS_END(runner, src, len) && SKIP_TRAILING_SPACES) \
- p = runner; \
- if ((pass <= 2) && !(IS_END(runner, src, len))) \
- p = runner; \
- if (IS_END(p, src, len)) \
- continue; \
- /* we switch passes */ \
- if (pass > 1) \
- break; \
- tmp = p; \
- pass= 1-pass; \
- p = store; store = tmp; \
- break; \
- } \
if (value == 255) \
{ \
int i; \
@@ -245,20 +338,20 @@
my_bool s2_is_prefix)
{
int v1, v2;
- const uchar * p1, * p2, * store1, * store2;
- int pass1 = 0, pass2 = 0;
+ const uchar * p1, * p2;
+ int pass1= 0, pass2= 0;
if (s2_is_prefix && len1 > len2)
len1=len2;
- p1 = s1; p2 = s2;
- store1 = s1; store2 = s2;
+ p1= s1;
+ p2= s2;
do
{
int diff;
- NEXT_CMP_VALUE(s1, p1, store1, pass1, v1, (int)len1);
- NEXT_CMP_VALUE(s2, p2, store2, pass2, v2, (int)len2);
+ NEXT_CMP_VALUE(s1, p1, pass1, v1, (int)len1, 1);
+ NEXT_CMP_VALUE(s2, p2, pass2, v2, (int)len2, 1);
if ((diff = v1 - v2))
return diff;
}
@@ -269,19 +362,66 @@
/*
- TODO: Fix this one to compare strings as they are done in ctype-simple1
+ Compare strings, ignore trailing spaces
*/
-static
-int my_strnncollsp_czech(CHARSET_INFO * cs,
- const uchar *s, uint slen,
- const uchar *t, uint tlen,
- my_bool diff_if_only_endspace_difference
- __attribute__((unused)))
+static int
+my_strnncollsp_czech(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen,
+ my_bool diff_if_only_endspace_difference
+ __attribute__((unused)))
{
- for ( ; slen && s[slen-1] == ' ' ; slen--);
- for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
- return my_strnncoll_czech(cs,s,slen,t,tlen,0);
+ int level;
+
+ for (level= 0; level <= 3; level++)
+ {
+ const uchar *s1= s;
+ const uchar *t1= t;
+
+ for ( ; ; )
+ {
+ int sval, tval, diff;
+ NEXT_CMP_VALUE(s, s1, level, sval, (int) slen, 0);
+ NEXT_CMP_VALUE(t, t1, level, tval, (int) tlen, 0);
+ if (!sval)
+ {
+ sval= CZ_SORT_TABLE[level][32];
+ for ( ; tval ; )
+ {
+ if ((diff= sval - tval))
+ return diff;
+ NEXT_CMP_VALUE(t, t1, level, tval, (int) tlen, 0);
+ }
+ break;
+ }
+ else if (!tval)
+ {
+ tval= CZ_SORT_TABLE[level][32];
+ for ( ; sval ; )
+ {
+ if ((diff= sval - tval))
+ return diff;
+ NEXT_CMP_VALUE(s, s1, level, sval, (int) slen, 0);
+ }
+ break;
+ }
+
+ if ((diff= sval - tval))
+ return diff;
+ }
+ }
+ return 0;
+}
+
+
+/*
+ Returns the number of bytes required for strnxfrm().
+*/
+static uint
+my_strnxfrmlen_czech(CHARSET_INFO *cs __attribute__((unused)), uint len)
+{
+ return len * 4 + 4;
}
@@ -289,50 +429,65 @@
Function strnxfrm, actually strxfrm, with Czech sorting, which expect
the length of the strings being specified
*/
-
-static int my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+static int
+my_strnxfrm_czech(CHARSET_INFO * cs __attribute__((unused)),
+ uchar *dst, uint dstlen, uint nweights_arg,
+ const uchar *src, uint srclen, uint flags)
{
- int value;
- const uchar * p, * store;
- int pass = 0;
- uint totlen = 0;
- p = src; store = src;
-
- do
+ uint level, levels;
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+
+ /*
+ Normalize level flags:
+ If any level number is greater than the maximum
+ (which is 4 for latin2_czech_cs), it is treated as the maximum.
+ If levels are omitted, then 1-maximum is assumed.
+ */
+ if (flags & (MY_STRXFRM_LEVEL5 | MY_STRXFRM_LEVEL6))
+ flags|= MY_STRXFRM_LEVEL4;
+ levels= (flags & 0x0F) ? (flags & 0x0F) : 0x0F;
+
+
+ for (level= 0; level <= 3; level++)
{
- NEXT_CMP_VALUE(src, p, store, pass, value, (int)srclen);
- ADD_TO_RESULT(dest, len, totlen, value);
+ if (levels & (1 << level))
+ {
+ uint nweights= nweights_arg;
+ const uchar *p= src;
+ int value;
+
+ for ( ; (dst < de) && nweights; nweights--)
+ {
+ NEXT_CMP_VALUE(src, p, level, value, (int) srclen, 0);
+ if (!value)
+ break;
+ *dst++= value;
+ }
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint pad_length= de - dst;
+ set_if_smaller(pad_length, nweights);
+ /* fill with weight for space character */
+ bfill(dst, pad_length, CZ_SORT_TABLE[level][32]);
+ dst+= pad_length;
+ }
+
+ /* Add level delimiter */
+ if (dst < de)
+ *dst++= level < 3 ? 1 : 0;
+ }
}
- while (value);
- if (len > totlen)
- bfill(dest + totlen, len - totlen, ' ');
- return len;
+
+ return dst - dst0;
}
+
#undef IS_END
/*
-
-
-
*/
@@ -353,12 +508,9 @@
** optimized !
*/
-#ifdef REAL_MYSQL
+#define min_sort_char 0x00
+#define max_sort_char 0xAE
-#define min_sort_char ' '
-#define max_sort_char '9'
-
-#define EXAMPLE
static my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
const char *ptr,uint ptr_length,
@@ -367,7 +519,6 @@
char *max_str,
uint *min_length,uint *max_length)
{
-#ifdef EXAMPLE
uchar value;
const char *end=ptr+ptr_length;
char *min_org=min_str;
@@ -411,15 +562,8 @@
*max_str++ = max_sort_char;
}
return 0;
-#else
- return 1;
-#endif
}
-#endif
-
-#ifdef REAL_MYSQL
-/* This is a latin2 file */
/*
* File generated by cset
@@ -427,8 +571,6 @@
*
* definition table reworked by Jaromir Dolecek <dolecek@stripped>
*/
-#include <my_global.h>
-#include "m_string.h"
static uchar NEAR ctype_czech[257] = {
0,
@@ -592,7 +734,7 @@
my_strnncoll_czech,
my_strnncollsp_czech,
my_strnxfrm_czech,
- my_strnxfrmlen_simple,
+ my_strnxfrmlen_czech,
my_like_range_czech,
my_wildcmp_bin,
my_strcasecmp_8bit,
@@ -632,8 +774,5 @@
&my_charset_8bit_handler,
&my_collation_latin2_czech_ci_handler
};
-
-
-#endif
#endif
--- 1.71/strings/ctype-euc_kr.c 2006-12-23 23:20:32 +04:00
+++ 1.72/strings/ctype-euc_kr.c 2007-03-16 16:08:24 +04:00
@@ -8674,7 +8674,7 @@
NULL, /* init */
my_strnncoll_simple, /* strnncoll */
my_strnncollsp_simple,
- my_strnxfrm_simple, /* strnxfrm */
+ my_strnxfrm_mb, /* strnxfrm */
my_strnxfrmlen_simple,
my_like_range_simple, /* like_range */
my_wildcmp_mb, /* wildcmp */
@@ -8684,6 +8684,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_euckr_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -8778,7 +8795,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_euckr_bin_handler
};
#endif
--- 1.68/strings/ctype-gb2312.c 2006-12-23 23:20:33 +04:00
+++ 1.69/strings/ctype-gb2312.c 2007-03-16 16:08:24 +04:00
@@ -5725,7 +5725,7 @@
NULL, /* init */
my_strnncoll_simple, /* strnncoll */
my_strnncollsp_simple,
- my_strnxfrm_simple, /* strnxfrm */
+ my_strnxfrm_mb, /* strnxfrm */
my_strnxfrmlen_simple,
my_like_range_simple, /* like_range */
my_wildcmp_mb, /* wildcmp */
@@ -5735,6 +5735,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_gb2312_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -5828,7 +5845,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_gb2312_bin_handler
};
#endif
--- 1.82/strings/ctype-gbk.c 2006-12-23 23:20:33 +04:00
+++ 1.83/strings/ctype-gbk.c 2007-03-16 16:08:24 +04:00
@@ -2662,29 +2662,41 @@
}
-static int my_strnxfrm_gbk(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+static int
+my_strnxfrm_gbk(CHARSET_INFO *cs,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uint16 e;
- uint dstlen= len;
-
- len = srclen;
- while (len--)
+ uchar *d0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ const uchar *sort_order= cs->sort_order;
+
+ for ( ; dst < de && src < se && nweights; nweights--)
{
- if ((len > 0) && isgbkcode(*src, *(src+1)))
+ if (cs->cset->ismbchar(cs,(const char*) src, (const char*) se))
{
- e = gbksortorder((uint16) gbkcode(*src, *(src+1)));
- *dest++ = gbkhead(e);
- *dest++ = gbktail(e);
- src+=2;
- len--;
- } else
- *dest++ = sort_order_gbk[(uchar) *src++];
+ /*
+ Note, it is safe not to check (src < se)
+ in the code below, because ismbchar() would
+ not return TRUE if src was too short
+ */
+ uint16 e= gbksortorder((uint16) gbkcode(*src, *(src+1)));
+ *dst++= gbkhead(e);
+ if (dst < de)
+ *dst++= gbktail(e);
+ src+= 2;
+ }
+ else
+ *dst++= sort_order ? sort_order[(uchar)*src++] : *src++;
+ }
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ dst+= fill_length;
}
- if (dstlen > srclen)
- bfill(dest, dstlen - srclen, ' ');
- return dstlen;
+ return dst - d0;
}
@@ -9988,6 +10000,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_gbk_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -10081,7 +10110,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_gbk_bin_handler
};
--- 1.93/strings/ctype-sjis.c 2007-01-24 21:57:04 +04:00
+++ 1.94/strings/ctype-sjis.c 2007-03-16 16:08:24 +04:00
@@ -280,29 +280,37 @@
}
-
-static int my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
- uchar *dest, uint len,
- const uchar *src, uint srclen)
+/*
+static int
+my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uchar *d_end = dest + len;
- uchar *s_end = (uchar*) src + srclen;
- while (dest < d_end && src < s_end)
+ uchar *d0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ my_bool bin= test(cs->state & MY_CS_BINSORT);
+
+ for ( ; dst < de && src < se && nweights; nweights--)
{
- if (ismbchar_sjis(cs,(char*) src, (char*) s_end))
+ if (ismbchar_sjis(cs,(const char*) src, (const char*) se))
{
- *dest++ = *src++;
- if (dest < d_end && src < s_end)
- *dest++ = *src++;
+ *dst++= *src++;
+ if (dst < de && src < se)
+ *dst++ = *src++;
}
else
- *dest++ = sort_order_sjis[(uchar)*src++];
+ *dst++= bin ? *src++ : sort_order_sjis[(uchar)*src++];
}
- if (len > srclen)
- bfill(dest, len - srclen, ' ');
- return len;
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ dst+= fill_length;
+ }
+ return dst - d0;
}
-
+*/
/*
** Calculate min_str and max_str that ranges a LIKE string.
@@ -4625,7 +4633,7 @@
NULL, /* init */
my_strnncoll_sjis,
my_strnncollsp_sjis,
- my_strnxfrm_sjis,
+ my_strnxfrm_mb,
my_strnxfrmlen_simple,
my_like_range_sjis,
my_wildcmp_mb, /* wildcmp */
@@ -4636,6 +4644,22 @@
};
+MY_COLLATION_HANDLER my_collation_sjis_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -4729,7 +4753,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_sjis_bin_handler
};
#endif
--- 1.95/strings/ctype-tis620.c 2006-12-23 23:20:33 +04:00
+++ 1.96/strings/ctype-tis620.c 2007-03-16 16:08:24 +04:00
@@ -634,16 +634,21 @@
static
int my_strnxfrm_tis620(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+ uchar *dest, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uint dstlen= len;
- len= (uint) (strmake((char*) dest, (char*) src, min(len, srclen)) -
+ uint len;
+ len= (uint) (strmake((char*) dest, (char*) src, min(dstlen, srclen)) -
(char*) dest);
len= thai2sortable(dest, len);
- if (dstlen > len)
+ set_if_smaller(dstlen, nweights);
+ set_if_smaller(len, dstlen);
+ if (dstlen > len && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
bfill(dest + len, dstlen - len, ' ');
- return dstlen;
+ return dstlen;
+ }
+ return len;
}
--- 1.74/strings/ctype-ujis.c 2007-01-24 21:57:04 +04:00
+++ 1.75/strings/ctype-ujis.c 2007-03-16 16:08:25 +04:00
@@ -8509,7 +8509,7 @@
NULL, /* init */
my_strnncoll_simple,/* strnncoll */
my_strnncollsp_simple,
- my_strnxfrm_simple, /* strnxfrm */
+ my_strnxfrm_mb, /* strnxfrm */
my_strnxfrmlen_simple,
my_like_range_simple,/* like_range */
my_wildcmp_mb, /* wildcmp */
@@ -8519,6 +8519,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_ujis_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -8614,7 +8631,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_ujis_bin_handler
};
--- 1.11/mysql-test/r/ctype_big5.result 2005-12-12 21:36:21 +04:00
+++ 1.12/mysql-test/r/ctype_big5.result 2007-03-16 16:08:23 +04:00
@@ -192,3 +192,131 @@
select hex(convert(_big5 0xC84041 using ucs2));
hex(convert(_big5 0xC84041 using ucs2))
003F0041
+set names big5;
+select @@collation_connection;
+@@collation_connection
+big5_chinese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+big5_chinese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A140
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A140
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A140
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1402020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A140A14020
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A14020
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A140A140
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A140A140
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A140
+set collation_connection=big5_bin;
+select @@collation_connection;
+@@collation_connection
+big5_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+big5_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
--- 1.9/mysql-test/r/ctype_latin1.result 2006-06-06 22:13:21 +05:00
+++ 1.10/mysql-test/r/ctype_latin1.result 2007-03-16 16:08:23 +04:00
@@ -405,3 +405,128 @@
1
2
+End of 5.1 tests
+select @@collation_connection;
+@@collation_connection
+latin1_swedish_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+set @@collation_connection=latin1_bin;
+select @@collation_connection;
+@@collation_connection
+latin1_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+set @@collation_connection=latin1_general_cs;
+select @@collation_connection;
+@@collation_connection
+latin1_general_cs
+select hex(weight_string('a'));
+hex(weight_string('a'))
+42
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+425254
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4252
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+425254
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+425254
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4252
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+425254
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4252542020
+set @@collation_connection=binary;
+select @@collation_connection;
+@@collation_connection
+binary
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162630000
+set names latin1;
--- 1.12/mysql-test/r/ctype_sjis.result 2006-06-19 16:48:38 +05:00
+++ 1.13/mysql-test/r/ctype_sjis.result 2007-03-16 16:08:23 +04:00
@@ -175,3 +175,131 @@
8DB2939181408C5C
+set names sjis;
+select @@collation_connection;
+@@collation_connection
+sjis_japanese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+sjis_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
+set collation_connection=sjis_bin;
+select @@collation_connection;
+@@collation_connection
+sjis_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+sjis_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
--- 1.13/mysql-test/r/ctype_tis620.result 2006-02-22 13:09:48 +04:00
+++ 1.14/mysql-test/r/ctype_tis620.result 2007-03-16 16:08:23 +04:00
@@ -2993,3 +2993,78 @@
c2h
ab_def
drop table t1;
+set names tis620;
+set collation_connection=tis620_thai_ci;
+select @@collation_connection;
+@@collation_connection
+tis620_thai_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+61
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select hex(weight_string(cast(0xE0A1 as char)));
+hex(weight_string(cast(0xE0A1 as char)))
+A1E0
+select hex(weight_string(cast(0xE0A1 as char) as char(1)));
+hex(weight_string(cast(0xE0A1 as char) as char(1)))
+A1
+set collation_connection=tis620_bin;
+select @@collation_connection;
+@@collation_connection
+tis620_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select hex(weight_string(cast(0xE0A1 as char)));
+hex(weight_string(cast(0xE0A1 as char)))
+E0A1
+select hex(weight_string(cast(0xE0A1 as char) as char(1)));
+hex(weight_string(cast(0xE0A1 as char) as char(1)))
+E0
--- 1.11/mysql-test/t/ctype_big5.test 2005-12-12 21:36:47 +04:00
+++ 1.12/mysql-test/t/ctype_big5.test 2007-03-16 16:08:23 +04:00
@@ -64,3 +64,12 @@
select hex(convert(_big5 0xC84041 using ucs2));
# End of 4.1 tests
+
+
+set names big5;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+
+set collation_connection=big5_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
--- 1.10/mysql-test/t/ctype_latin1.test 2006-06-06 22:13:21 +05:00
+++ 1.11/mysql-test/t/ctype_latin1.test 2007-03-16 16:08:23 +04:00
@@ -121,3 +121,16 @@
+
+--echo End of 5.1 tests
+
+--source include/weight_string.inc
+set @@collation_connection=latin1_bin;
+--source include/weight_string.inc
+set @@collation_connection=latin1_general_cs;
+--source include/weight_string.inc
+
+set @@collation_connection=binary;
+--source include/weight_string.inc
+
+set names latin1;
--- 1.12/mysql-test/t/ctype_sjis.test 2006-06-19 16:48:38 +05:00
+++ 1.13/mysql-test/t/ctype_sjis.test 2007-03-16 16:08:23 +04:00
@@ -81,3 +81,13 @@
# End of 4.1 tests
+
+
+set names sjis;
+--source include/weight_string.inc
+--source include/weight_string_8140.inc
+
+
+set collation_connection=sjis_bin;
+--source include/weight_string.inc
+--source include/weight_string_8140.inc
--- 1.13/mysql-test/t/ctype_tis620.test 2006-05-12 21:16:41 +05:00
+++ 1.14/mysql-test/t/ctype_tis620.test 2007-03-16 16:08:24 +04:00
@@ -161,3 +161,14 @@
-- source include/ctype_like_escape.inc
# End of 4.1 tests
+
+
+set names tis620;
+set collation_connection=tis620_thai_ci;
+-- source include/weight_string.inc
+select hex(weight_string(cast(0xE0A1 as char)));
+select hex(weight_string(cast(0xE0A1 as char) as char(1)));
+set collation_connection=tis620_bin;
+-- source include/weight_string.inc
+select hex(weight_string(cast(0xE0A1 as char)));
+select hex(weight_string(cast(0xE0A1 as char) as char(1)));
--- 1.43/strings/ctype-uca.c 2007-01-22 16:10:42 +04:00
+++ 1.44/strings/ctype-uca.c 2007-03-16 16:08:24 +04:00
@@ -7237,31 +7237,32 @@
static int my_strnxfrm_uca(CHARSET_INFO *cs,
my_uca_scanner_handler *scanner_handler,
- uchar *dst, uint dstlen,
- const uchar *src, uint srclen)
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uchar *de = dst + (dstlen & (uint) ~1); /* add even length for easier code */
+ uchar *d0= dst;
+ uchar *de= dst + (dstlen & (uint) ~1); /* add even length for easier code */
int s_res;
my_uca_scanner scanner;
scanner_handler->init(&scanner, cs, src, srclen);
- while (dst < de && (s_res= scanner_handler->next(&scanner)) >0)
+ for ( ; dst < de && nweights && (s_res= scanner_handler->next(&scanner)) >0 ; nweights--)
{
- dst[0]= s_res >> 8;
- dst[1]= s_res & 0xFF;
- dst+= 2;
+ *dst++= s_res >> 8;
+ *dst++= s_res & 0xFF;
}
- s_res= cs->sort_order_big[0][0x20 * cs->sort_order[0]];
- while (dst < de)
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
{
- dst[0]= s_res >> 8;
- dst[1]= s_res & 0xFF;
- dst+= 2;
+ uint space_count= min((uint) (de - dst) / 2, nweights);
+ s_res= cs->sort_order_big[0][0x20 * cs->sort_order[0]];
+ for ( ; space_count ; space_count--)
+ {
+ *dst++= s_res >> 8;
+ *dst++= s_res & 0xFF;
+ }
}
- if (dstlen & 1) /* if odd number then fill the last char */
- *dst= '\0';
-
- return dstlen;
+ return dst - d0;
}
@@ -7993,11 +7994,11 @@
}
static int my_strnxfrm_any_uca(CHARSET_INFO *cs,
- uchar *dst, uint dstlen,
- const uchar *src, uint srclen)
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
return my_strnxfrm_uca(cs, &my_any_uca_scanner_handler,
- dst, dstlen, src, srclen);
+ dst, dstlen, nweights, src, srclen, flags);
}
@@ -8032,11 +8033,11 @@
}
static int my_strnxfrm_ucs2_uca(CHARSET_INFO *cs,
- uchar *dst, uint dstlen,
- const uchar *src, uint srclen)
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
return my_strnxfrm_uca(cs, &my_ucs2_uca_scanner_handler,
- dst, dstlen, src, srclen);
+ dst, dstlen, nweights, src, srclen, flags);
}
MY_COLLATION_HANDLER my_collation_ucs2_uca_handler =
--- 1.54/mysql-test/r/ctype_ucs.result 2006-10-12 09:39:54 +05:00
+++ 1.55/mysql-test/r/ctype_ucs.result 2007-03-16 16:08:23 +04:00
@@ -848,3 +848,66 @@
text 65535 32767
drop table t1;
End of 5.0 tests
+set names latin1;
+set collation_connection=ucs2_general_ci;
+select @@collation_connection;
+@@collation_connection
+ucs2_general_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0041
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0041
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+004100420043
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+00410042
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+004100420043
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+004100420043
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+00410042
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+004100420043
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+00410042004300200020
+set collation_connection=ucs2_bin;
+select @@collation_connection;
+@@collation_connection
+ucs2_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0061
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0041
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+006100620063
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+00610062
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+006100620063
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+006100620063
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+00610062
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+006100620063
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+00610062006300200020
--- 1.113/mysql-test/r/ctype_utf8.result 2006-11-20 18:04:57 +04:00
+++ 1.114/mysql-test/r/ctype_utf8.result 2007-03-16 16:08:23 +04:00
@@ -1602,3 +1602,66 @@
1 foo 1 foo
2 foo bar 2 foo bar
DROP TABLE t1, t2;
+End of 5.1 tests
+set names utf8;
+select @@collation_connection;
+@@collation_connection
+utf8_general_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0041
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0041
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+00410042
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+00410042
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+004100420043
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+004100420043
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+00410042
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+004100420043
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+00410042004300200020
+set @@collation_connection=utf8_bin;
+select @@collation_connection;
+@@collation_connection
+utf8_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0061
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0041
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+00610062
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+00610062
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+006100620063
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+006100620063
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+00610062
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+006100620063
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+00610062006300200020
--- 1.50/mysql-test/t/ctype_ucs.test 2006-11-22 01:15:29 +04:00
+++ 1.51/mysql-test/t/ctype_ucs.test 2007-03-16 16:08:24 +04:00
@@ -581,3 +581,10 @@
drop table t1;
--echo End of 5.0 tests
+
+
+set names latin1;
+set collation_connection=ucs2_general_ci;
+-- source include/weight_string.inc
+set collation_connection=ucs2_bin;
+-- source include/weight_string.inc
--- 1.103/mysql-test/t/ctype_utf8.test 2007-01-22 21:08:44 +04:00
+++ 1.104/mysql-test/t/ctype_utf8.test 2007-03-16 16:08:24 +04:00
@@ -1296,3 +1296,10 @@
SELECT * FROM t1 JOIN t2 ON t1.colA=t2.colA AND t1.colB=t2.colB
WHERE t1.colA < 3;
DROP TABLE t1, t2;
+
+--echo End of 5.1 tests
+
+set names utf8;
+--source include/weight_string.inc
+set @@collation_connection=utf8_bin;
+--source include/weight_string.inc
--- 1.75/strings/ctype-bin.c 2007-01-24 21:57:04 +04:00
+++ 1.76/strings/ctype-bin.c 2007-03-16 16:08:24 +04:00
@@ -374,28 +374,23 @@
}
-static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint dstlen,
- const uchar *src, uint srclen)
+static int
+my_strnxfrm_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
+ uchar * dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- if (dest != src)
- memcpy(dest, src, min(dstlen,srclen));
- if (dstlen > srclen)
- bfill(dest + srclen, dstlen - srclen, 0);
- return dstlen;
-}
-
-
-static
-int my_strnxfrm_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint dstlen,
- const uchar *src, uint srclen)
-{
- if (dest != src)
- memcpy(dest, src, min(dstlen,srclen));
- if (dstlen > srclen)
- bfill(dest + srclen, dstlen - srclen, ' ');
- return dstlen;
+ set_if_smaller(srclen, dstlen);
+ set_if_smaller(srclen, nweights);
+ if (dst != src)
+ memcpy(dst, src, srclen);
+ if (dstlen > srclen && nweights > srclen &&
+ (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ set_if_smaller(dstlen, nweights);
+ bfill(dst + srclen, dstlen - srclen, cs->pad_char);
+ return dstlen;
+ }
+ return srclen;
}
@@ -481,7 +476,7 @@
NULL, /* init */
my_strnncoll_binary,
my_strnncollsp_binary,
- my_strnxfrm_bin,
+ my_strnxfrm_8bit_bin,
my_strnxfrmlen_simple,
my_like_range_simple,
my_wildcmp_bin,
--- 1.52/strings/ctype-latin1.c 2006-12-23 23:20:33 +04:00
+++ 1.53/strings/ctype-latin1.c 2007-03-16 16:08:24 +04:00
@@ -655,22 +655,30 @@
}
-static int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+static int
+my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar* src, uint srclen, uint flags)
{
- const uchar *de = dest + len;
- const uchar *se = src + srclen;
- for ( ; src < se && dest < de ; src++)
+ const uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ for ( ; src < se && dst < de && nweights; src++, nweights--)
{
- uchar chr=combo1map[*src];
- *dest++=chr;
- if ((chr=combo2map[*src]) && dest < de)
- *dest++=chr;
+ uchar chr= combo1map[*src];
+ *dst++= chr;
+ if ((chr= combo2map[*src]) && dst < de && nweights > 1)
+ {
+ *dst++= chr;
+ nweights--;
+ }
}
- if (dest < de)
- bfill(dest, de - dest, ' ');
- return (int) len;
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ return (int) dstlen - (de - dst) + fill_length;
+ }
+ return dstlen - (de - dst);
}
--- 1.68/strings/ctype-ucs2.c 2007-02-27 13:27:00 +04:00
+++ 1.69/strings/ctype-ucs2.c 2007-03-16 16:08:25 +04:00
@@ -362,8 +362,10 @@
}
-static int my_strnxfrm_ucs2(CHARSET_INFO *cs,
- uchar *dst, uint dstlen, const uchar *src, uint srclen)
+static int
+my_strnxfrm_ucs2(CHARSET_INFO *cs,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
my_wc_t wc;
int res;
@@ -372,7 +374,7 @@
const uchar *se = src + srclen;
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
- while( src < se && dst < de )
+ for ( ; src < se && dst < de && nweights ; nweights--)
{
if ((res=my_ucs2_uni(cs,&wc, src, se))<0)
{
@@ -390,9 +392,13 @@
}
dst+=res;
}
- if (dst < de)
- cs->cset->fill(cs, (char*) dst, (uint) (de - dst), ' ');
- return dstlen;
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights * 2);
+ cs->cset->fill(cs, (char*) dst, fill_length, ' ');
+ return dstlen - (de - dst) + fill_length;
+ }
+ return dstlen - (de - dst);
}
@@ -1468,14 +1474,22 @@
static
int my_strnxfrm_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)),
- uchar *dst, uint dstlen,
- const uchar *src, uint srclen)
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
+ nweights*= 2;
+ set_if_smaller(srclen, dstlen);
+ set_if_smaller(srclen, nweights);
if (dst != src)
- memcpy(dst,src,srclen= min(dstlen,srclen));
- if (dstlen > srclen)
+ memcpy(dst, src, srclen);
+ if (dstlen > srclen && nweights > srclen &&
+ (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ set_if_smaller(dstlen, nweights);
cs->cset->fill(cs, (char*) dst + srclen, dstlen - srclen, ' ');
- return dstlen;
+ return dstlen;
+ }
+ return srclen;
}
--- 1.56/strings/ctype-mb.c 2007-01-24 21:57:04 +04:00
+++ 1.57/strings/ctype-mb.c 2007-03-16 16:08:24 +04:00
@@ -359,10 +359,10 @@
/* BINARY collations handlers for MB charsets */
-static int my_strnncoll_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
- const uchar *s, uint slen,
- const uchar *t, uint tlen,
- my_bool t_is_prefix)
+int my_strnncoll_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen,
+ my_bool t_is_prefix)
{
uint len=min(slen,tlen);
int cmp= memcmp(s,t,len);
@@ -395,10 +395,10 @@
0 if strings are equal
*/
-static int my_strnncollsp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
- const uchar *a, uint a_length,
- const uchar *b, uint b_length,
- my_bool diff_if_only_endspace_difference)
+int my_strnncollsp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *a, uint a_length,
+ const uchar *b, uint b_length,
+ my_bool diff_if_only_endspace_difference)
{
const uchar *end;
uint length;
@@ -442,26 +442,61 @@
}
-static int my_strnxfrm_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
- uchar * dest, uint dstlen,
- const uchar *src, uint srclen)
-{
- if (dest != src)
- memcpy(dest, src, min(dstlen, srclen));
- if (dstlen > srclen)
- bfill(dest + srclen, dstlen - srclen, ' ');
- return dstlen;
+/*
+ For character sets with two or three byte multibyte characters
+ having multibyte weights equal to their codes:
+ cp932, euck, gb2312, sjis, eucjpms, ujis
+*/
+int
+my_strnxfrm_mb(CHARSET_INFO *cs,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
+{
+ uchar *d0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ const uchar *sort_order= cs->sort_order;
+
+ for ( ; dst < de && src < se && nweights; nweights--)
+ {
+ if (cs->cset->ismbchar(cs,(const char*) src, (const char*) se))
+ {
+ /*
+ Note, it is safe not to check (src < se)
+ in the code below, because ismbchar() would
+ not return TRUE if src was too short
+ */
+ int charlen= cs->cset->mbcharlen(cs, *src);
+ *dst++= *src++;
+ if (dst < de)
+ {
+ *dst++= *src++;
+ if (charlen > 2 && dst < de)
+ *dst++= *src++;
+ }
+ }
+ else
+ *dst++= sort_order ? sort_order[(uchar)*src++] : *src++;
+ }
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ dst+= fill_length;
+ }
+ return dst - d0;
}
-static int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
- const char *s, const char *t)
+int my_strcasecmp_mb_bin(CHARSET_INFO * cs __attribute__((unused)),
+ const char *s, const char *t)
{
return strcmp(s,t);
}
-static void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
- const uchar *key, uint len,ulong *nr1, ulong *nr2)
+
+void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
+ const uchar *key, uint len,ulong *nr1, ulong *nr2)
{
const uchar *pos = key;
@@ -606,10 +641,10 @@
}
-static int my_wildcmp_mb_bin(CHARSET_INFO *cs,
- const char *str,const char *str_end,
- const char *wildstr,const char *wildend,
- int escape, int w_one, int w_many)
+int my_wildcmp_mb_bin(CHARSET_INFO *cs,
+ const char *str,const char *str_end,
+ const char *wildstr,const char *wildend,
+ int escape, int w_one, int w_many)
{
int result= -1; /* Not found, using wildcards */
@@ -956,23 +991,6 @@
my_uni_ctype[wc>>8].pctype;
return res;
}
-
-
-
-MY_COLLATION_HANDLER my_collation_mb_bin_handler =
-{
- NULL, /* init */
- my_strnncoll_mb_bin,
- my_strnncollsp_mb_bin,
- my_strnxfrm_mb_bin,
- my_strnxfrmlen_simple,
- my_like_range_mb,
- my_wildcmp_mb_bin,
- my_strcasecmp_mb_bin,
- my_instr_mb,
- my_hash_sort_mb_bin,
- my_propagate_simple
-};
#endif
--- 1.85/strings/ctype-simple.c 2007-01-24 21:57:04 +04:00
+++ 1.86/strings/ctype-simple.c 2007-03-16 16:08:24 +04:00
@@ -71,12 +71,13 @@
int my_strnxfrm_simple(CHARSET_INFO * cs,
- uchar *dest, uint len,
- const uchar *src, uint srclen)
+ uchar *dest, uint len, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
uchar *map= cs->sort_order;
uint dstlen= len;
set_if_smaller(len, srclen);
+ set_if_smaller(len, nweights);
if (dest != src)
{
const uchar *end;
@@ -89,9 +90,13 @@
for ( end=dest+len; dest < end ; dest++)
*dest= (char) map[(uchar) *dest];
}
- if (dstlen > len)
+ if (dstlen > len && nweights > len && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ set_if_smaller(dstlen, nweights);
bfill(dest, dstlen - len, ' ');
- return dstlen;
+ return dstlen;
+ }
+ return len;
}
int my_strnncoll_simple(CHARSET_INFO * cs, const uchar *s, uint slen,
--- 1.112/strings/ctype-utf8.c 2007-02-27 13:27:00 +04:00
+++ 1.113/strings/ctype-utf8.c 2007-03-16 16:08:25 +04:00
@@ -2570,18 +2570,19 @@
}
static int my_strnxfrm_utf8(CHARSET_INFO *cs,
- uchar *dst, uint dstlen,
- const uchar *src, uint srclen)
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint 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;
- while (dst < de_beg)
+ for ( ; dst < de_beg && nweights; nweights--)
{
if ((res=my_utf8_uni(cs,&wc, src, se)) <= 0)
break;
@@ -2595,18 +2596,59 @@
}
- while (dst < de_beg) /* Fill the tail with keys for space character */
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
{
- *dst++= 0x00;
- *dst++= 0x20;
+ /* 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;
+ }
+ return dst - dst0;
+}
+
+
+static int my_strnxfrm_utf8_bin(CHARSET_INFO *cs,
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint 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_utf8_uni(cs,&wc, src, se)) <= 0)
+ break;
+ src+=res;
+
+ *dst++= (uchar)(wc >> 8);
+ *dst++= (uchar)(wc & 0xFF);
}
- if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
- *dst= 0x00;
-
- return dstlen;
+ 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;
+ }
+ return dst - dst0;
}
+
static int my_ismbchar_utf8(CHARSET_INFO *cs,const char *b, const char *e)
{
my_wc_t wc;
@@ -2651,6 +2693,23 @@
my_propagate_complex
};
+
+static MY_COLLATION_HANDLER my_collation_utf8_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_utf8_bin,
+ my_strnxfrmlen_utf8,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
MY_CHARSET_HANDLER my_charset_utf8_handler=
{
NULL, /* init */
@@ -2746,7 +2805,7 @@
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_utf8_handler,
- &my_collation_mb_bin_handler
+ &my_collation_utf8_bin_handler
};
#ifdef HAVE_UTF8_GENERAL_CS
--- 1.58/strings/ctype-win1250ch.c 2006-12-23 23:20:33 +04:00
+++ 1.59/strings/ctype-win1250ch.c 2007-03-16 16:08:25 +04:00
@@ -36,20 +36,10 @@
* .configure. strxfrm_multiply_win1250ch=2
*/
-#define REAL_MYSQL
-#ifdef REAL_MYSQL
-
#include "my_global.h"
#include "m_string.h"
#include "m_ctype.h"
-#else
-
-#include <stdio.h>
-#define uchar unsigned char
-
-#endif
-
#ifdef HAVE_CHARSET_cp1250
@@ -399,23 +389,32 @@
0x02, 0x06, 0x04, 0x0a, 0x08, 0x04, 0x06, 0x01
};
-struct wordvalue {
- const uchar * word;
- uchar pass1;
- uchar pass2;
-};
-static struct wordvalue doubles[] = {
- { (uchar*) "ch", 0xad, 0x03 },
- { (uchar*) "c", 0xa6, 0x02 },
- { (uchar*) "Ch", 0xad, 0x02 },
- { (uchar*) "CH", 0xad, 0x01 },
- { (uchar*) "C", 0xa6, 0x01 },
+struct wordvalue
+{
+ const uchar * word;
+ uchar pass1;
+ uchar pass2;
};
-#define NEXT_CMP_VALUE(src, p, pass, value, len) \
+static struct wordvalue doubles[]=
+{
+ { (uchar*) "ch", 0xad, 0x03 },
+ { (uchar*) "c", 0xa6, 0x02 },
+ { (uchar*) "Ch", 0xad, 0x02 },
+ { (uchar*) "CH", 0xad, 0x01 },
+ { (uchar*) "C", 0xa6, 0x01 },
+};
+
+/*
+ ml - a flag indicating whether automatically
+ switch to the secondary level,
+ or stop on the primary level
+*/
+
+#define NEXT_CMP_VALUE(src, p, pass, value, len, ml) \
while (1) { \
if (IS_END(p, src, len)) { \
- if (pass == 0 && len > 0) { p= src; pass++; } \
+ if (pass == 0 && ml && len > 0) { p= src; pass++; } \
else { value = 0; break; } \
} \
value = ((pass == 0) ? _sort_order_win1250ch1[*p] \
@@ -462,8 +461,8 @@
do
{
- NEXT_CMP_VALUE(s1, p1, pass1, v1, (int)len1);
- NEXT_CMP_VALUE(s2, p2, pass2, v2, (int)len2);
+ NEXT_CMP_VALUE(s1, p1, pass1, v1, (int)len1, 1);
+ NEXT_CMP_VALUE(s2, p2, pass2, v2, (int)len2, 1);
if ((diff = v1 - v2))
return diff;
} while (v1);
@@ -472,46 +471,110 @@
/*
- TODO: Has to be fixed as strnncollsp in ctype-simple
+ Compare strings, ignore trailing spaces
*/
-static
-int my_strnncollsp_win1250ch(CHARSET_INFO * cs,
- const uchar *s, uint slen,
- const uchar *t, uint tlen,
- my_bool diff_if_only_endspace_difference
- __attribute__((unused)))
+static int
+my_strnncollsp_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
+ const uchar *s, uint slen,
+ const uchar *t, uint tlen,
+ my_bool diff_if_only_endspace_difference
+ __attribute__((unused)))
{
- for ( ; slen && s[slen-1] == ' ' ; slen--);
- for ( ; tlen && t[tlen-1] == ' ' ; tlen--);
- return my_strnncoll_win1250ch(cs,s,slen,t,tlen,0);
+ int level;
+
+ for (level= 0; level <= 3; level++)
+ {
+ const uchar *s1= s;
+ const uchar *t1= t;
+
+ for ( ; ; )
+ {
+ int sval, tval, diff;
+ NEXT_CMP_VALUE(s, s1, level, sval, (int) slen, 0);
+ NEXT_CMP_VALUE(t, t1, level, tval, (int) tlen, 0);
+ if (!sval)
+ {
+ sval= level ? _sort_order_win1250ch2[32] : _sort_order_win1250ch1[32];
+ for ( ; tval ; )
+ {
+ if ((diff= sval - tval))
+ return diff;
+ NEXT_CMP_VALUE(t, t1, level, tval, (int) tlen, 0);
+ }
+ break;
+ }
+ else if (!tval)
+ {
+ tval= level ? _sort_order_win1250ch2[32] : _sort_order_win1250ch1[32];
+ for ( ; sval ; )
+ {
+ if ((diff= sval - tval))
+ return diff;
+ NEXT_CMP_VALUE(s, s1, level, sval, (int) slen, 0);
+ }
+ break;
+ }
+
+ if ((diff= sval - tval))
+ return diff;
+ }
+ }
+ return 0;
}
-static int my_strnxfrm_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
- uchar * dest, uint len,
- const uchar * src, uint srclen)
+static int
+my_strnxfrm_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
+ uchar *dst, uint dstlen, uint nweights_arg,
+ const uchar *src, uint srclen, uint flags)
{
- int value;
- const uchar * p;
- int pass = 0;
- uint totlen = 0;
- p = src;
-
- do {
- NEXT_CMP_VALUE(src, p, pass, value, (int)srclen);
- if (totlen <= len)
- dest[totlen] = value;
- totlen++;
- } while (value) ;
- if (len > totlen)
- bfill(dest + totlen, len - totlen, ' ');
- return len;
+ uint level, levels;
+ uchar *dst0= dst;
+ uchar *de= dst + dstlen;
+
+ /*
+ Normalize level flags:
+ If any level number is greater than the maximum
+ (which is 2 for cp1250_czech_cs), it is treated as the maximum.
+ If levels are omitted, then 1-maximum is assumed.
+ */
+ if (flags & (MY_STRXFRM_LEVEL3 | MY_STRXFRM_LEVEL4 |
+ MY_STRXFRM_LEVEL5 | MY_STRXFRM_LEVEL6))
+ flags|= MY_STRXFRM_LEVEL2;
+ levels= (flags & 0x03) ? (flags & 0x03) : 0x03;
+
+ for (level= 0; level <= 1; level++)
+ {
+ if (levels & (1 << level))
+ {
+ uint nweights= nweights_arg;
+ const uchar *p= src;
+ int value;
+
+ for ( ; (dst < de) && nweights; nweights--)
+ {
+ NEXT_CMP_VALUE(src, p, level, value, (int) srclen, 0);
+ if (!value)
+ break;
+ *dst++= value;
+ }
+
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint pad_length= de - dst;
+ set_if_smaller(pad_length, nweights);
+ /* [82.01] - weights for space character */
+ bfill(dst, pad_length, (int) (level ? 0x01 : 0x82));
+ dst+= pad_length;
+ }
+ }
+ }
+ return dst - dst0;
}
#undef IS_END
-#ifdef REAL_MYSQL
static uchar NEAR like_range_prefix_min_win1250ch[]=
{
@@ -709,7 +772,5 @@
&my_collation_czech_ci_handler
};
-
-#endif /* REAL_MYSQL */
#endif /* HAVE_CHARSET_cp1250 */
--- New file ---
+++ mysql-test/include/ctype_pad_space.inc 07/03/16 16:08:25
SELECT strcmp('a','a ');
SELECT strcmp('a\0','a' );
SELECT strcmp('a\0','a ');
SELECT strcmp('a\t','a' );
SELECT strcmp('a\t','a ');
--- New file ---
+++ mysql-test/include/weight_string.inc 07/03/16 16:08:25
select @@collation_connection;
select hex(weight_string('a'));
select hex(weight_string('A'));
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)));
select hex(weight_string('abc' as char(2) pad_with_space));
select hex(weight_string('abc' as char(3) pad_with_space));
select hex(weight_string('abc' as char(5) pad_with_space));
--- New file ---
+++ mysql-test/include/weight_string_8140.inc 07/03/16 16:08:25
select collation(cast(0x8140 as char));
select hex(weight_string(cast(0x6141 as char)));
select hex(weight_string(cast(0x8140 as char)));
select hex(weight_string(cast(0x8140 as char) as char(1)));
select hex(weight_string(cast(0x81408140 as char) as char(1)));
select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
--- New file ---
+++ mysql-test/include/weight_string_8EA1.inc 07/03/16 16:08:25
select collation(cast(0xA1A1 as char));
select hex(weight_string(cast(0x6141 as char)));
select hex(weight_string(cast(0x8EA1 as char)));
select hex(weight_string(cast(0x8EA1 as char) as char(1)));
select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
--- New file ---
+++ mysql-test/include/weight_string_8FA2C3.inc 07/03/16 16:08:25
select collation(cast(0x8FA2C3 as char));
select hex(weight_string(cast(0x6141 as char)));
select hex(weight_string(cast(0x8FA2C3 as char)));
select hex(weight_string(cast(0x8FA2C3 as char) as char(1)));
select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)));
select hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
--- New file ---
+++ mysql-test/include/weight_string_A1A1.inc 07/03/16 16:08:26
select collation(cast(0xA1A1 as char));
select hex(weight_string(cast(0x6141 as char)));
select hex(weight_string(cast(0xA1A1 as char)));
select hex(weight_string(cast(0xA1A1 as char) as char(1)));
select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
--- New file ---
+++ mysql-test/include/weight_string_chde.inc 07/03/16 16:08:26
select @@collation_connection;
select collation(cast(_latin1 0xDF as char));
select hex(weight_string('s'));
select hex(weight_string(cast(_latin1 0xDF as char)));
select hex(weight_string(cast(_latin1 0xDF as char) as char(1)));
select hex(weight_string('c'));
select hex(weight_string('h'));
select hex(weight_string('ch'));
select hex(weight_string('i'));
-- contraction 'ch' plus expansion 'sharp s'
select hex(weight_string(cast(_latin1 0x6368DF as char)));
select hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)));
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) pad_with_space));
-- expansion 'shart 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) pad_with_space));
--- New file ---
+++ mysql-test/include/weight_string_l1.inc 07/03/16 16:08:26
select @@collation_connection;
select hex(weight_string('a' LEVEL 1));
select hex(weight_string('A' LEVEL 1));
select hex(weight_string('abc' LEVEL 1));
select hex(weight_string('abc' as char(2) LEVEL 1));
select hex(weight_string('abc' as char(3) LEVEL 1));
select hex(weight_string('abc' as char(5) LEVEL 1));
select hex(weight_string('abc' as char(2) LEVEL 1 pad_with_space));
select hex(weight_string('abc' as char(3) LEVEL 1 pad_with_space));
select hex(weight_string('abc' as char(5) LEVEL 1 pad_with_space));
--- New file ---
+++ mysql-test/include/weight_string_l12.inc 07/03/16 16:08:26
select @@collation_connection;
select hex(weight_string('a' LEVEL 1,2));
select hex(weight_string('a' LEVEL 1-2));
select hex(weight_string('A' LEVEL 1,2));
select hex(weight_string('A' LEVEL 1-2));
--- New file ---
+++ mysql-test/include/weight_string_l14.inc 07/03/16 16:08:27
select @@collation_connection;
select hex(weight_string('a' LEVEL 1,3));
select hex(weight_string('a' LEVEL 1-3));
select hex(weight_string('A' LEVEL 1,3));
select hex(weight_string('A' LEVEL 1-3));
select hex(weight_string('a' LEVEL 1,4));
select hex(weight_string('a' LEVEL 1-4));
select hex(weight_string('A' LEVEL 1,4));
select hex(weight_string('A' LEVEL 1-4));
select hex(weight_string('a' LEVEL 2,3));
select hex(weight_string('a' LEVEL 2-3));
select hex(weight_string('A' LEVEL 2,3));
select hex(weight_string('A' LEVEL 2-3));
select hex(weight_string('a' LEVEL 2,4));
select hex(weight_string('a' LEVEL 2-4));
select hex(weight_string('A' LEVEL 2,4));
select hex(weight_string('A' LEVEL 2-4));
select hex(weight_string('a' LEVEL 3,4));
select hex(weight_string('a' LEVEL 3-4));
select hex(weight_string('A' LEVEL 3,4));
select hex(weight_string('A' LEVEL 3-4));
select hex(weight_string('a' LEVEL 1,2,3,4));
select hex(weight_string('a' LEVEL 2,3,4));
select hex(weight_string('a' LEVEL 1,3,4));
select hex(weight_string('a' LEVEL 1,2,3));
# If any number is less than 1, it is treated as 1.
select hex(weight_string('a' LEVEL 0));
#If any number is greater than the maximum, it is treated as the maximum.
select hex(weight_string('a' LEVEL 8));
select hex(weight_string('a' LEVEL 1,8));
--- New file ---
+++ mysql-test/include/weight_string_l2.inc 07/03/16 16:08:27
select @@collation_connection;
select hex(weight_string('a' LEVEL 2));
select hex(weight_string('A' LEVEL 2));
select hex(weight_string('abc' LEVEL 2));
select hex(weight_string('abc' as char(2) LEVEL 2));
select hex(weight_string('abc' as char(3) LEVEL 2));
select hex(weight_string('abc' as char(5) LEVEL 2));
select hex(weight_string('abc' as char(2) LEVEL 2 pad_with_space));
select hex(weight_string('abc' as char(3) LEVEL 2 pad_with_space));
select hex(weight_string('abc' as char(5) LEVEL 2 pad_with_space));
--- New file ---
+++ mysql-test/include/weight_string_l3.inc 07/03/16 16:08:27
select @@collation_connection;
select hex(weight_string('a' LEVEL 3));
select hex(weight_string('A' LEVEL 3));
select hex(weight_string('abc' LEVEL 3));
select hex(weight_string('abc' as char(2) LEVEL 3));
select hex(weight_string('abc' as char(3) LEVEL 3));
select hex(weight_string('abc' as char(5) LEVEL 3));
select hex(weight_string('abc' as char(2) LEVEL 3 pad_with_space));
select hex(weight_string('abc' as char(3) LEVEL 3 pad_with_space));
select hex(weight_string('abc' as char(5) LEVEL 3 pad_with_space));
--- New file ---
+++ mysql-test/include/weight_string_l4.inc 07/03/16 16:08:27
select @@collation_connection;
select hex(weight_string('a' LEVEL 4));
select hex(weight_string('A' LEVEL 4));
select hex(weight_string('abc' LEVEL 4));
select hex(weight_string('abc' as char(2) LEVEL 4));
select hex(weight_string('abc' as char(3) LEVEL 4));
select hex(weight_string('abc' as char(5) LEVEL 4));
select hex(weight_string('abc' as char(2) LEVEL 4 pad_with_space));
select hex(weight_string('abc' as char(3) LEVEL 4 pad_with_space));
select hex(weight_string('abc' as char(5) LEVEL 4 pad_with_space));
--- 1.9/mysql-test/r/ctype_cp1250_ch.result 2006-11-27 03:47:21 +04:00
+++ 1.10/mysql-test/r/ctype_cp1250_ch.result 2007-03-16 16:08:23 +04:00
@@ -52,3 +52,190 @@
a
drop table t1;
+set names cp1250 collate cp1250_czech_cs;
+SELECT strcmp('a','a ');
+strcmp('a','a ')
+0
+SELECT strcmp('a\0','a' );
+strcmp('a\0','a' )
+-1
+SELECT strcmp('a\0','a ');
+strcmp('a\0','a ')
+-1
+SELECT strcmp('a\t','a' );
+strcmp('a\t','a' )
+-1
+SELECT strcmp('a\t','a ');
+strcmp('a\t','a ')
+-1
+create table t1 select repeat('a',4000) a;
+delete from t1;
+insert into t1 values ('a'), ('a '), ('a\t');
+select collation(a),hex(a) from t1 order by a;
+collation(a) hex(a)
+cp1250_czech_cs 6109
+cp1250_czech_cs 61
+cp1250_czech_cs 6120
+drop table t1;
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select hex(weight_string('a'));
+hex(weight_string('a'))
+A402
+select hex(weight_string('A'));
+hex(weight_string('A'))
+A401
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+A4A5A6020202
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+A4A50202
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+A4A5A6020202
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+A4A5A6020202
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+A4A50202
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+A4A5A6020202
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+A4A5A682820202020101
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select collation(cast(_latin1 0xDF as char));
+collation(cast(_latin1 0xDF as char))
+cp1250_czech_cs
+select hex(weight_string('s'));
+hex(weight_string('s'))
+B902
+select hex(weight_string(cast(_latin1 0xDF as char)));
+hex(weight_string(cast(_latin1 0xDF as char)))
+BB01
+select hex(weight_string(cast(_latin1 0xDF as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF as char) as char(1)))
+BB01
+select hex(weight_string('c'));
+hex(weight_string('c'))
+A602
+select hex(weight_string('h'));
+hex(weight_string('h'))
+AC02
+select hex(weight_string('ch'));
+hex(weight_string('ch'))
+AD03
+select hex(weight_string('i'));
+hex(weight_string('i'))
+AE02
+select hex(weight_string(cast(_latin1 0x6368DF as char)));
+hex(weight_string(cast(_latin1 0x6368DF as char)))
+ADBB0301
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)))
+AD03
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)))
+ADBB0301
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)))
+ADBB0301
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space))
+ADBB828203010101
+select hex(weight_string(cast(_latin1 0xDF6368 as char)));
+hex(weight_string(cast(_latin1 0xDF6368 as char)))
+BBAD0103
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)))
+BB01
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)))
+BBAD0103
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)))
+BBAD0103
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space))
+BBAD828201030101
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select hex(weight_string('a' LEVEL 1));
+hex(weight_string('a' LEVEL 1))
+A4
+select hex(weight_string('A' LEVEL 1));
+hex(weight_string('A' LEVEL 1))
+A4
+select hex(weight_string('abc' LEVEL 1));
+hex(weight_string('abc' LEVEL 1))
+A4A5A6
+select hex(weight_string('abc' as char(2) LEVEL 1));
+hex(weight_string('abc' as char(2) LEVEL 1))
+A4A5
+select hex(weight_string('abc' as char(3) LEVEL 1));
+hex(weight_string('abc' as char(3) LEVEL 1))
+A4A5A6
+select hex(weight_string('abc' as char(5) LEVEL 1));
+hex(weight_string('abc' as char(5) LEVEL 1))
+A4A5A6
+select hex(weight_string('abc' as char(2) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 1 pad_with_space))
+A4A5
+select hex(weight_string('abc' as char(3) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 1 pad_with_space))
+A4A5A6
+select hex(weight_string('abc' as char(5) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 1 pad_with_space))
+A4A5A68282
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select hex(weight_string('a' LEVEL 2));
+hex(weight_string('a' LEVEL 2))
+02
+select hex(weight_string('A' LEVEL 2));
+hex(weight_string('A' LEVEL 2))
+01
+select hex(weight_string('abc' LEVEL 2));
+hex(weight_string('abc' LEVEL 2))
+020202
+select hex(weight_string('abc' as char(2) LEVEL 2));
+hex(weight_string('abc' as char(2) LEVEL 2))
+0202
+select hex(weight_string('abc' as char(3) LEVEL 2));
+hex(weight_string('abc' as char(3) LEVEL 2))
+020202
+select hex(weight_string('abc' as char(5) LEVEL 2));
+hex(weight_string('abc' as char(5) LEVEL 2))
+020202
+select hex(weight_string('abc' as char(2) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 2 pad_with_space))
+0202
+select hex(weight_string('abc' as char(3) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 2 pad_with_space))
+020202
+select hex(weight_string('abc' as char(5) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 2 pad_with_space))
+0202020101
+select @@collation_connection;
+@@collation_connection
+cp1250_czech_cs
+select hex(weight_string('a' LEVEL 1,2));
+hex(weight_string('a' LEVEL 1,2))
+A402
+select hex(weight_string('a' LEVEL 1-2));
+hex(weight_string('a' LEVEL 1-2))
+A402
+select hex(weight_string('A' LEVEL 1,2));
+hex(weight_string('A' LEVEL 1,2))
+A401
+select hex(weight_string('A' LEVEL 1-2));
+hex(weight_string('A' LEVEL 1-2))
+A401
--- 1.2/mysql-test/r/ctype_euckr.result 2006-05-12 21:26:40 +05:00
+++ 1.3/mysql-test/r/ctype_euckr.result 2007-03-16 16:08:23 +04:00
@@ -165,3 +165,131 @@
A2E6
FEF7
DROP TABLE t1;
+set names euckr;
+select @@collation_connection;
+@@collation_connection
+euckr_korean_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+euckr_korean_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+set collation_connection=euckr_bin;
+select @@collation_connection;
+@@collation_connection
+euckr_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+euckr_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
--- 1.2/mysql-test/r/ctype_gb2312.result 2006-05-12 21:26:40 +05:00
+++ 1.3/mysql-test/r/ctype_gb2312.result 2007-03-16 16:08:23 +04:00
@@ -165,3 +165,131 @@
A2A1
D7FE
DROP TABLE t1;
+set names gb2312;
+select @@collation_connection;
+@@collation_connection
+gb2312_chinese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gb2312_chinese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+set collation_connection=gb2312_bin;
+select @@collation_connection;
+@@collation_connection
+gb2312_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gb2312_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
--- 1.4/mysql-test/r/ctype_gbk.result 2006-09-29 16:24:06 +05:00
+++ 1.5/mysql-test/r/ctype_gbk.result 2007-03-16 16:08:23 +04:00
@@ -178,3 +178,263 @@
) ENGINE=MyISAM DEFAULT CHARSET=gbk
drop table t1;
End of 5.0 tests
+set names gbk;
+select @@collation_connection;
+@@collation_connection
+gbk_chinese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gbk_chinese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+810B
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+810B
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+810B
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+810B2020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+810B810B20
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40810B20
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40810B810B
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40810B810B
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040810B
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+gbk_chinese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+A2CD
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+A2CD
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+A2CD
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+A2CD2020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+A2CDA2CD20
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40A2CD20
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+40A2CDA2CD
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+40A2CDA2CD
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+4040A2CD
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gbk_chinese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8E08
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8E08
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8E08
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8E082020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8E088E0820
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408E0820
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408E088E08
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408E088E08
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408E08
+set collation_connection=gbk_bin;
+select @@collation_connection;
+@@collation_connection
+gbk_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gbk_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+gbk_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+gbk_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8EA12020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8EA18EA120
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408EA120
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408EA18EA1
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408EA18EA1
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408EA1
--- 1.2/mysql-test/r/ctype_latin2.result 2005-05-06 18:41:38 +05:00
+++ 1.3/mysql-test/r/ctype_latin2.result 2007-03-16 16:08:23 +04:00
@@ -381,3 +381,66 @@
drop table t1;
+End of 5.1 tests
+set names latin2;
+select @@collation_connection;
+@@collation_connection
+latin2_general_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414445
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4144
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414445
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414445
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4144
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414445
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4144452020
+set collation_connection=latin2_bin;
+select @@collation_connection;
+@@collation_connection
+latin2_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
--- 1.2/mysql-test/r/ctype_latin2_ch.result 2006-04-18 21:10:42 +05:00
+++ 1.3/mysql-test/r/ctype_latin2_ch.result 2007-03-16 16:08:23 +04:00
@@ -29,3 +29,334 @@
select * from t1 where tt like '%AA%';
id tt
drop table t1;
+set names latin2 collate latin2_czech_cs;
+SELECT strcmp('a','a ');
+strcmp('a','a ')
+0
+SELECT strcmp('a\0','a' );
+strcmp('a\0','a' )
+0
+SELECT strcmp('a\0','a ');
+strcmp('a\0','a ')
+0
+SELECT strcmp('a\t','a' );
+strcmp('a\t','a' )
+-1
+SELECT strcmp('a\t','a ');
+strcmp('a\t','a ')
+-1
+create table t1 select repeat('a',4000) a;
+delete from t1;
+insert into t1 values ('a'), ('a '), ('a\t');
+select collation(a),hex(a) from t1 order by a;
+collation(a) hex(a)
+latin2_czech_cs 6109
+latin2_czech_cs 61
+latin2_czech_cs 6120
+drop table t1;
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a'));
+hex(weight_string('a'))
+8201200102016100
+select hex(weight_string('A'));
+hex(weight_string('A'))
+8201200104014100
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+82838401202020010202020161626300
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+828301202001020201616200
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+82838401202020010202020161626300
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+82838401202020010202020161626300
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+828301202001020201616200
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+82838401202020010202020161626300
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+828384474701202020202001020202020201616263202000
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select collation(cast(_latin1 0xDF as char));
+collation(cast(_latin1 0xDF as char))
+latin2_czech_cs
+select hex(weight_string('s'));
+hex(weight_string('s'))
+9801200102017300
+select hex(weight_string(cast(_latin1 0xDF as char)));
+hex(weight_string(cast(_latin1 0xDF as char)))
+980121010201DF00
+select hex(weight_string(cast(_latin1 0xDF as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF as char) as char(1)))
+980121010201DF00
+select hex(weight_string('c'));
+hex(weight_string('c'))
+8401200102016300
+select hex(weight_string('h'));
+hex(weight_string('h'))
+8A01200102016800
+select hex(weight_string('ch'));
+hex(weight_string('ch'))
+8B01200102016300
+select hex(weight_string('i'));
+hex(weight_string('i'))
+8C01200102016900
+select hex(weight_string(cast(_latin1 0x6368DF as char)));
+hex(weight_string(cast(_latin1 0x6368DF as char)))
+8B980120210102020163DF00
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)))
+8B01200102016300
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)))
+8B980120210102020163DF00
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)))
+8B980120210102020163DF00
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space))
+8B984747012021202001020202020163DF202000
+select hex(weight_string(cast(_latin1 0xDF6368 as char)));
+hex(weight_string(cast(_latin1 0xDF6368 as char)))
+988B01212001020201DF6300
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)))
+980121010201DF00
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)))
+988B01212001020201DF6300
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)))
+988B01212001020201DF6300
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space))
+988B47470121202020010202020201DF63202000
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 1));
+hex(weight_string('a' LEVEL 1))
+8201
+select hex(weight_string('A' LEVEL 1));
+hex(weight_string('A' LEVEL 1))
+8201
+select hex(weight_string('abc' LEVEL 1));
+hex(weight_string('abc' LEVEL 1))
+82838401
+select hex(weight_string('abc' as char(2) LEVEL 1));
+hex(weight_string('abc' as char(2) LEVEL 1))
+828301
+select hex(weight_string('abc' as char(3) LEVEL 1));
+hex(weight_string('abc' as char(3) LEVEL 1))
+82838401
+select hex(weight_string('abc' as char(5) LEVEL 1));
+hex(weight_string('abc' as char(5) LEVEL 1))
+82838401
+select hex(weight_string('abc' as char(2) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 1 pad_with_space))
+828301
+select hex(weight_string('abc' as char(3) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 1 pad_with_space))
+82838401
+select hex(weight_string('abc' as char(5) LEVEL 1 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 1 pad_with_space))
+828384474701
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 2));
+hex(weight_string('a' LEVEL 2))
+2001
+select hex(weight_string('A' LEVEL 2));
+hex(weight_string('A' LEVEL 2))
+2001
+select hex(weight_string('abc' LEVEL 2));
+hex(weight_string('abc' LEVEL 2))
+20202001
+select hex(weight_string('abc' as char(2) LEVEL 2));
+hex(weight_string('abc' as char(2) LEVEL 2))
+202001
+select hex(weight_string('abc' as char(3) LEVEL 2));
+hex(weight_string('abc' as char(3) LEVEL 2))
+20202001
+select hex(weight_string('abc' as char(5) LEVEL 2));
+hex(weight_string('abc' as char(5) LEVEL 2))
+20202001
+select hex(weight_string('abc' as char(2) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 2 pad_with_space))
+202001
+select hex(weight_string('abc' as char(3) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 2 pad_with_space))
+20202001
+select hex(weight_string('abc' as char(5) LEVEL 2 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 2 pad_with_space))
+202020202001
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 3));
+hex(weight_string('a' LEVEL 3))
+0201
+select hex(weight_string('A' LEVEL 3));
+hex(weight_string('A' LEVEL 3))
+0401
+select hex(weight_string('abc' LEVEL 3));
+hex(weight_string('abc' LEVEL 3))
+02020201
+select hex(weight_string('abc' as char(2) LEVEL 3));
+hex(weight_string('abc' as char(2) LEVEL 3))
+020201
+select hex(weight_string('abc' as char(3) LEVEL 3));
+hex(weight_string('abc' as char(3) LEVEL 3))
+02020201
+select hex(weight_string('abc' as char(5) LEVEL 3));
+hex(weight_string('abc' as char(5) LEVEL 3))
+02020201
+select hex(weight_string('abc' as char(2) LEVEL 3 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 3 pad_with_space))
+020201
+select hex(weight_string('abc' as char(3) LEVEL 3 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 3 pad_with_space))
+02020201
+select hex(weight_string('abc' as char(5) LEVEL 3 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 3 pad_with_space))
+020202020201
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 4));
+hex(weight_string('a' LEVEL 4))
+6100
+select hex(weight_string('A' LEVEL 4));
+hex(weight_string('A' LEVEL 4))
+4100
+select hex(weight_string('abc' LEVEL 4));
+hex(weight_string('abc' LEVEL 4))
+61626300
+select hex(weight_string('abc' as char(2) LEVEL 4));
+hex(weight_string('abc' as char(2) LEVEL 4))
+616200
+select hex(weight_string('abc' as char(3) LEVEL 4));
+hex(weight_string('abc' as char(3) LEVEL 4))
+61626300
+select hex(weight_string('abc' as char(5) LEVEL 4));
+hex(weight_string('abc' as char(5) LEVEL 4))
+61626300
+select hex(weight_string('abc' as char(2) LEVEL 4 pad_with_space));
+hex(weight_string('abc' as char(2) LEVEL 4 pad_with_space))
+616200
+select hex(weight_string('abc' as char(3) LEVEL 4 pad_with_space));
+hex(weight_string('abc' as char(3) LEVEL 4 pad_with_space))
+61626300
+select hex(weight_string('abc' as char(5) LEVEL 4 pad_with_space));
+hex(weight_string('abc' as char(5) LEVEL 4 pad_with_space))
+616263202000
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 1,2));
+hex(weight_string('a' LEVEL 1,2))
+82012001
+select hex(weight_string('a' LEVEL 1-2));
+hex(weight_string('a' LEVEL 1-2))
+82012001
+select hex(weight_string('A' LEVEL 1,2));
+hex(weight_string('A' LEVEL 1,2))
+82012001
+select hex(weight_string('A' LEVEL 1-2));
+hex(weight_string('A' LEVEL 1-2))
+82012001
+select @@collation_connection;
+@@collation_connection
+latin2_czech_cs
+select hex(weight_string('a' LEVEL 1,3));
+hex(weight_string('a' LEVEL 1,3))
+82010201
+select hex(weight_string('a' LEVEL 1-3));
+hex(weight_string('a' LEVEL 1-3))
+820120010201
+select hex(weight_string('A' LEVEL 1,3));
+hex(weight_string('A' LEVEL 1,3))
+82010401
+select hex(weight_string('A' LEVEL 1-3));
+hex(weight_string('A' LEVEL 1-3))
+820120010401
+select hex(weight_string('a' LEVEL 1,4));
+hex(weight_string('a' LEVEL 1,4))
+82016100
+select hex(weight_string('a' LEVEL 1-4));
+hex(weight_string('a' LEVEL 1-4))
+8201200102016100
+select hex(weight_string('A' LEVEL 1,4));
+hex(weight_string('A' LEVEL 1,4))
+82014100
+select hex(weight_string('A' LEVEL 1-4));
+hex(weight_string('A' LEVEL 1-4))
+8201200104014100
+select hex(weight_string('a' LEVEL 2,3));
+hex(weight_string('a' LEVEL 2,3))
+20010201
+select hex(weight_string('a' LEVEL 2-3));
+hex(weight_string('a' LEVEL 2-3))
+20010201
+select hex(weight_string('A' LEVEL 2,3));
+hex(weight_string('A' LEVEL 2,3))
+20010401
+select hex(weight_string('A' LEVEL 2-3));
+hex(weight_string('A' LEVEL 2-3))
+20010401
+select hex(weight_string('a' LEVEL 2,4));
+hex(weight_string('a' LEVEL 2,4))
+20016100
+select hex(weight_string('a' LEVEL 2-4));
+hex(weight_string('a' LEVEL 2-4))
+200102016100
+select hex(weight_string('A' LEVEL 2,4));
+hex(weight_string('A' LEVEL 2,4))
+20014100
+select hex(weight_string('A' LEVEL 2-4));
+hex(weight_string('A' LEVEL 2-4))
+200104014100
+select hex(weight_string('a' LEVEL 3,4));
+hex(weight_string('a' LEVEL 3,4))
+02016100
+select hex(weight_string('a' LEVEL 3-4));
+hex(weight_string('a' LEVEL 3-4))
+02016100
+select hex(weight_string('A' LEVEL 3,4));
+hex(weight_string('A' LEVEL 3,4))
+04014100
+select hex(weight_string('A' LEVEL 3-4));
+hex(weight_string('A' LEVEL 3-4))
+04014100
+select hex(weight_string('a' LEVEL 1,2,3,4));
+hex(weight_string('a' LEVEL 1,2,3,4))
+8201200102016100
+select hex(weight_string('a' LEVEL 2,3,4));
+hex(weight_string('a' LEVEL 2,3,4))
+200102016100
+select hex(weight_string('a' LEVEL 1,3,4));
+hex(weight_string('a' LEVEL 1,3,4))
+820102016100
+select hex(weight_string('a' LEVEL 1,2,3));
+hex(weight_string('a' LEVEL 1,2,3))
+820120010201
+select hex(weight_string('a' LEVEL 0));
+hex(weight_string('a' LEVEL 0))
+8201
+select hex(weight_string('a' LEVEL 8));
+hex(weight_string('a' LEVEL 8))
+6100
+select hex(weight_string('a' LEVEL 1,8));
+hex(weight_string('a' LEVEL 1,8))
+82016100
--- 1.17/mysql-test/r/ctype_uca.result 2005-12-23 14:19:31 +04:00
+++ 1.18/mysql-test/r/ctype_uca.result 2007-03-16 16:08:23 +04:00
@@ -2654,3 +2654,183 @@
İİ 4 ii 2 İİ 4
II 2 ıı 4 II 2
DROP TABLE t1;
+End of 5.1 tests
+set names latin1;
+set collation_connection=ucs2_unicode_ci;
+select @@collation_connection;
+@@collation_connection
+ucs2_unicode_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0E33
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0E33
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+0E330E4A0E60
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+0E330E4A
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+0E330E4A0E60
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+0E330E4A0E60
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+0E330E4A
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+0E330E4A0E60
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+0E330E4A0E6002090209
+set @@collation_connection=utf8_unicode_ci;
+select @@collation_connection;
+@@collation_connection
+utf8_unicode_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+0E33
+select hex(weight_string('A'));
+hex(weight_string('A'))
+0E33
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+0E330E4A0E60
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+0E330E4A
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+0E330E4A0E60
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+0E330E4A0E60
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+0E330E4A
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+0E330E4A0E60
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+0E330E4A0E6002090209
+set @@collation_connection=utf8_czech_ci;
+select @@collation_connection;
+@@collation_connection
+utf8_czech_ci
+select collation(cast(_latin1 0xDF as char));
+collation(cast(_latin1 0xDF as char))
+utf8_czech_ci
+select hex(weight_string('s'));
+hex(weight_string('s'))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF as char)));
+hex(weight_string(cast(_latin1 0xDF as char)))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF as char) as char(1)))
+0FEA
+select hex(weight_string('c'));
+hex(weight_string('c'))
+0E60
+select hex(weight_string('h'));
+hex(weight_string('h'))
+0EE1
+select hex(weight_string('ch'));
+hex(weight_string('ch'))
+0EE2
+select hex(weight_string('i'));
+hex(weight_string('i'))
+0EFB
+select hex(weight_string(cast(_latin1 0x6368DF as char)));
+hex(weight_string(cast(_latin1 0x6368DF as char)))
+0EE20FEA0FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)))
+0EE20FEA0FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space))
+0EE20FEA0FEA0209
+select hex(weight_string(cast(_latin1 0xDF6368 as char)));
+hex(weight_string(cast(_latin1 0xDF6368 as char)))
+0FEA0FEA0EE2
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)))
+0FEA0FEA0EE2
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space))
+0FEA0FEA0EE20209
+set @@collation_connection=ucs2_czech_ci;
+select @@collation_connection;
+@@collation_connection
+ucs2_czech_ci
+select collation(cast(_latin1 0xDF as char));
+collation(cast(_latin1 0xDF as char))
+ucs2_czech_ci
+select hex(weight_string('s'));
+hex(weight_string('s'))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF as char)));
+hex(weight_string(cast(_latin1 0xDF as char)))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF as char) as char(1)))
+0FEA
+select hex(weight_string('c'));
+hex(weight_string('c'))
+0E60
+select hex(weight_string('h'));
+hex(weight_string('h'))
+0EE1
+select hex(weight_string('ch'));
+hex(weight_string('ch'))
+0EE2
+select hex(weight_string('i'));
+hex(weight_string('i'))
+0EFB
+select hex(weight_string(cast(_latin1 0x6368DF as char)));
+hex(weight_string(cast(_latin1 0x6368DF as char)))
+0EE20FEA0FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(1)))
+0EE2
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(2)))
+0EE20FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(3)))
+0EE20FEA0FEA
+select hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0x6368DF as char) as char(4) pad_with_space))
+0EE20FEA0FEA0209
+select hex(weight_string(cast(_latin1 0xDF6368 as char)));
+hex(weight_string(cast(_latin1 0xDF6368 as char)))
+0FEA0FEA0EE2
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(1)))
+0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(2)))
+0FEA0FEA
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(3)))
+0FEA0FEA0EE2
+select hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space));
+hex(weight_string(cast(_latin1 0xDF6368 as char) as char(4) pad_with_space))
+0FEA0FEA0EE20209
--- 1.8/mysql-test/t/ctype_cp1250_ch.test 2006-11-22 01:15:29 +04:00
+++ 1.9/mysql-test/t/ctype_cp1250_ch.test 2007-03-16 16:08:23 +04:00
@@ -62,3 +62,13 @@
drop table t1;
# End of 4.1 tests
+
+
+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_chde.inc
+--source include/weight_string_l1.inc
+--source include/weight_string_l2.inc
+--source include/weight_string_l12.inc
--- 1.1/mysql-test/t/ctype_euckr.test 2005-12-09 16:33:43 +04:00
+++ 1.2/mysql-test/t/ctype_euckr.test 2007-03-16 16:08:23 +04:00
@@ -31,3 +31,12 @@
DROP TABLE t1;
# End of 4.1 tests
+
+
+set names euckr;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+
+set collation_connection=euckr_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
--- 1.1/mysql-test/t/ctype_gb2312.test 2005-12-09 16:33:43 +04:00
+++ 1.2/mysql-test/t/ctype_gb2312.test 2007-03-16 16:08:23 +04:00
@@ -31,3 +31,12 @@
DROP TABLE t1;
# End of 4.1 tests
+
+
+set names gb2312;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+
+set collation_connection=gb2312_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
--- 1.5/mysql-test/t/ctype_gbk.test 2006-09-29 16:24:06 +05:00
+++ 1.6/mysql-test/t/ctype_gbk.test 2007-03-16 16:08:23 +04:00
@@ -52,3 +52,16 @@
drop table t1;
--echo End of 5.0 tests
+
+
+set names gbk;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8140.inc
+--source include/weight_string_8EA1.inc
+
+set collation_connection=gbk_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8140.inc
+--source include/weight_string_8EA1.inc
--- 1.3/mysql-test/t/ctype_latin2.test 2005-07-28 05:21:40 +05:00
+++ 1.4/mysql-test/t/ctype_latin2.test 2007-03-16 16:08:23 +04:00
@@ -50,3 +50,11 @@
drop table t1;
# End of 4.1 tests
+
+--echo End of 5.1 tests
+
+set names latin2;
+--source include/weight_string.inc
+
+set collation_connection=latin2_bin;
+--source include/weight_string.inc
--- 1.2/mysql-test/t/ctype_latin2_ch.test 2006-04-18 21:10:42 +05:00
+++ 1.3/mysql-test/t/ctype_latin2_ch.test 2007-03-16 16:08:23 +04:00
@@ -27,6 +27,19 @@
select * from t1 ignore index (primary) where tt like 'AA%';
select * from t1 where tt like '%AA%';
+drop table t1;
+
# End of 4.1 tests
-drop table t1;
+
+set names latin2 collate latin2_czech_cs;
+--source include/ctype_pad_space.inc
+--source include/ctype_filesort.inc
+--source include/weight_string.inc
+--source include/weight_string_chde.inc
+--source include/weight_string_l1.inc
+--source include/weight_string_l2.inc
+--source include/weight_string_l3.inc
+--source include/weight_string_l4.inc
+--source include/weight_string_l12.inc
+--source include/weight_string_l14.inc
--- 1.15/mysql-test/t/ctype_uca.test 2005-12-23 14:19:25 +04:00
+++ 1.16/mysql-test/t/ctype_uca.test 2007-03-16 16:08:24 +04:00
@@ -475,3 +475,15 @@
SELECT a, length(a) la, @l:=lower(a) l, length(@l) ll, @u:=upper(a) u, length(@u) lu
FROM t1 ORDER BY id;
DROP TABLE t1;
+
+--echo End of 5.1 tests
+
+set names latin1;
+set collation_connection=ucs2_unicode_ci;
+-- source include/weight_string.inc
+set @@collation_connection=utf8_unicode_ci;
+--source include/weight_string.inc
+set @@collation_connection=utf8_czech_ci;
+--source include/weight_string_chde.inc
+set @@collation_connection=ucs2_czech_ci;
+--source include/weight_string_chde.inc
--- 1.7/mysql-test/r/binlog_row_ctype_cp932.result 2007-03-07 10:20:56 +04:00
+++ 1.8/mysql-test/r/binlog_row_ctype_cp932.result 2007-03-16 16:08:23 +04:00
@@ -11375,3 +11375,132 @@
ソ
+End of 5.1 tests
+set names cp932;
+select @@collation_connection;
+@@collation_connection
+cp932_japanese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+cp932_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
+set collation_connection=cp932_bin;
+select @@collation_connection;
+@@collation_connection
+cp932_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+cp932_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
--- 1.37/storage/ndb/src/common/util/NdbSqlUtil.cpp 2007-02-23 15:23:42 +04:00
+++ 1.38/storage/ndb/src/common/util/NdbSqlUtil.cpp 2007-03-16 16:08:24 +04:00
@@ -997,13 +997,15 @@
if (n1 <= 0)
return -1;
// strxfrm to binary
- int n2 = (*cs->coll->strnxfrm)(cs, xsp, sizeof(xsp), nsp, n1);
+ int n2 = (*cs->coll->strnxfrm)(cs, xsp, sizeof(xsp), sizeof(xsp),
+ nsp, n1, MY_STRXFRM_PAD_WITH_SPACE);
if (n2 <= 0)
return -1;
// XXX bug workaround - strnxfrm may not write full string
memset(dst, 0x0, dstLen);
// strxfrm argument string - returns no error indication
- int n3 = (*cs->coll->strnxfrm)(cs, dst, dstLen, src, srcLen);
+ int n3 = (*cs->coll->strnxfrm)(cs, dst, dstLen, dstLen,
+ src, srcLen, MY_STRXFRM_PAD_WITH_SPACE);
// pad with strxfrm-ed space chars
int n4 = n3;
while (n4 < (int)dstLen) {
--- 1.25/mysql-test/r/ctype_latin1_de.result 2006-02-22 13:09:48 +04:00
+++ 1.26/mysql-test/r/ctype_latin1_de.result 2007-03-16 16:08:23 +04:00
@@ -344,3 +344,86 @@
s1
drop table t1;
+End of 5.1 tests
+set @@collation_connection=latin1_german2_ci;
+select @@collation_connection;
+@@collation_connection
+latin1_german2_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+4145
+4145
+4F45
+4F45
+5545
+5545
+select hex(weight_string('S'));
+hex(weight_string('S'))
+53
+select hex(weight_string('s'));
+hex(weight_string('s'))
+53
+5353
+41
+4F
+55
+53
+5841
+584F
+5855
+5853
--- 1.26/mysql-test/t/ctype_latin1_de.test 2005-09-16 00:17:37 +05:00
+++ 1.27/mysql-test/t/ctype_latin1_de.test 2007-03-16 16:08:23 +04:00
@@ -142,3 +142,25 @@
insert into t1 values (0xf6) /* this is o-umlaut */;
select * from t1 where length(s1)=1 and s1='oe';
drop table t1;
+
+--echo End of 5.1 tests
+
+set @@collation_connection=latin1_german2_ci;
+--source include/weight_string.inc
+select hex(weight_string('S'));
+select hex(weight_string('s'));
--- 1.19/mysql-test/r/ctype_ujis.result 2006-03-23 14:07:36 +04:00
+++ 1.20/mysql-test/r/ctype_ujis.result 2007-03-16 16:08:23 +04:00
@@ -2343,3 +2343,264 @@
set names default;
set character_set_database=default;
set character_set_server=default;
+End of 5.1 tests
+set names ujis;
+select @@collation_connection;
+@@collation_connection
+ujis_japanese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+ujis_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+ujis_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8EA12020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8EA18EA120
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408EA120
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408EA18EA1
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408EA18EA1
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408EA1
+select collation(cast(0x8FA2C3 as char));
+collation(cast(0x8FA2C3 as char))
+ujis_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8FA2C3 as char)));
+hex(weight_string(cast(0x8FA2C3 as char)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space))
+8FA2C32020
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space))
+8FA2C38FA2C320
+select hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space))
+408FA2C320
+select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
+40408FA2C3
+set collation_connection=ujis_bin;
+select @@collation_connection;
+@@collation_connection
+ujis_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+ujis_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+ujis_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8EA12020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8EA18EA120
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408EA120
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408EA18EA1
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408EA18EA1
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408EA1
+select collation(cast(0x8FA2C3 as char));
+collation(cast(0x8FA2C3 as char))
+ujis_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8FA2C3 as char)));
+hex(weight_string(cast(0x8FA2C3 as char)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space))
+8FA2C32020
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space))
+8FA2C38FA2C320
+select hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space))
+408FA2C320
+select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
+40408FA2C3
--- 1.19/mysql-test/t/ctype_ujis.test 2006-03-23 14:07:36 +04:00
+++ 1.20/mysql-test/t/ctype_ujis.test 2007-03-16 16:08:24 +04:00
@@ -1210,3 +1210,17 @@
set names default;
set character_set_database=default;
set character_set_server=default;
+
+--echo End of 5.1 tests
+
+set names ujis;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8EA1.inc
+--source include/weight_string_8FA2C3.inc
+
+set collation_connection=ujis_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8EA1.inc
+--source include/weight_string_8FA2C3.inc
--- 1.15/mysql-test/r/binlog_stm_ctype_cp932.result 2007-03-07 13:24:05 +04:00
+++ 1.16/mysql-test/r/binlog_stm_ctype_cp932.result 2007-03-16 16:08:23 +04:00
@@ -11375,3 +11375,132 @@
ソ
+End of 5.1 tests
+set names cp932;
+select @@collation_connection;
+@@collation_connection
+cp932_japanese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+cp932_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
+set collation_connection=cp932_bin;
+select @@collation_connection;
+@@collation_connection
+cp932_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0x8140 as char));
+collation(cast(0x8140 as char))
+cp932_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8140 as char)));
+hex(weight_string(cast(0x8140 as char)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(1)));
+hex(weight_string(cast(0x8140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x81408140 as char) as char(1)));
+hex(weight_string(cast(0x81408140 as char) as char(1)))
+8140
+select hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8140 as char) as char(3) pad_with_space))
+81402020
+select hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x81408140 as char) as char(3) pad_with_space))
+8140814020
+select hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408140 as char) as char(3) pad_with_space))
+40814020
+select hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x4081408140 as char) as char(3) pad_with_space))
+4081408140
+select hex(weight_string(cast(0x40814081408140 as char) as char(3)));
+hex(weight_string(cast(0x40814081408140 as char) as char(3)))
+4081408140
+select hex(weight_string(cast(0x4040814081408140 as char) as char(3)));
+hex(weight_string(cast(0x4040814081408140 as char) as char(3)))
+40408140
--- 1.6/mysql-test/r/ctype_eucjpms.result 2006-03-23 14:03:31 +04:00
+++ 1.7/mysql-test/r/ctype_eucjpms.result 2007-03-16 16:08:23 +04:00
@@ -9825,3 +9825,264 @@
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
hex(convert(_eucjpms 0x8FABF841 using ucs2))
003F0041
+End of 5.1 tests
+set names eucjpms;
+select @@collation_connection;
+@@collation_connection
+eucjpms_japanese_ci
+select hex(weight_string('a'));
+hex(weight_string('a'))
+41
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+414243
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+4142
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+414243
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+414243
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+4142
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+414243
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+4142432020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+eucjpms_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+eucjpms_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8EA12020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8EA18EA120
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408EA120
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408EA18EA1
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408EA18EA1
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408EA1
+select collation(cast(0x8FA2C3 as char));
+collation(cast(0x8FA2C3 as char))
+eucjpms_japanese_ci
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+4141
+select hex(weight_string(cast(0x8FA2C3 as char)));
+hex(weight_string(cast(0x8FA2C3 as char)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space))
+8FA2C32020
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space))
+8FA2C38FA2C320
+select hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space))
+408FA2C320
+select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
+40408FA2C3
+set collation_connection=eucjpms_bin;
+select @@collation_connection;
+@@collation_connection
+eucjpms_bin
+select hex(weight_string('a'));
+hex(weight_string('a'))
+61
+select hex(weight_string('A'));
+hex(weight_string('A'))
+41
+select hex(weight_string('abc'));
+hex(weight_string('abc'))
+616263
+select hex(weight_string('abc' as char(2)));
+hex(weight_string('abc' as char(2)))
+6162
+select hex(weight_string('abc' as char(3)));
+hex(weight_string('abc' as char(3)))
+616263
+select hex(weight_string('abc' as char(5)));
+hex(weight_string('abc' as char(5)))
+616263
+select hex(weight_string('abc' as char(2) pad_with_space));
+hex(weight_string('abc' as char(2) pad_with_space))
+6162
+select hex(weight_string('abc' as char(3) pad_with_space));
+hex(weight_string('abc' as char(3) pad_with_space))
+616263
+select hex(weight_string('abc' as char(5) pad_with_space));
+hex(weight_string('abc' as char(5) pad_with_space))
+6162632020
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+eucjpms_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0xA1A1 as char)));
+hex(weight_string(cast(0xA1A1 as char)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(1)))
+A1A1
+select hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1 as char) as char(3) pad_with_space))
+A1A12020
+select hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0xA1A1A1A1 as char) as char(3) pad_with_space))
+A1A1A1A120
+select hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1 as char) as char(3) pad_with_space))
+40A1A120
+select hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x40A1A1A1A1 as char) as char(3) pad_with_space))
+40A1A1A1A1
+select hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x40A1A1A1A1A1A1 as char) as char(3)))
+40A1A1A1A1
+select hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)));
+hex(weight_string(cast(0x4040A1A1A1A1A1A1 as char) as char(3)))
+4040A1A1
+select collation(cast(0xA1A1 as char));
+collation(cast(0xA1A1 as char))
+eucjpms_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8EA1 as char)));
+hex(weight_string(cast(0x8EA1 as char)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(1)));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(1)))
+8EA1
+select hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA1 as char) as char(3) pad_with_space))
+8EA12020
+select hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8EA18EA1 as char) as char(3) pad_with_space))
+8EA18EA120
+select hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA1 as char) as char(3) pad_with_space))
+408EA120
+select hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408EA18EA1 as char) as char(3) pad_with_space))
+408EA18EA1
+select hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x408EA18EA18EA1 as char) as char(3)))
+408EA18EA1
+select hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)));
+hex(weight_string(cast(0x40408EA18EA18EA1 as char) as char(3)))
+40408EA1
+select collation(cast(0x8FA2C3 as char));
+collation(cast(0x8FA2C3 as char))
+eucjpms_bin
+select hex(weight_string(cast(0x6141 as char)));
+hex(weight_string(cast(0x6141 as char)))
+6141
+select hex(weight_string(cast(0x8FA2C3 as char)));
+hex(weight_string(cast(0x8FA2C3 as char)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(1)))
+8FA2C3
+select hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C3 as char) as char(3) pad_with_space))
+8FA2C32020
+select hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x8FA2C38FA2C3 as char) as char(3) pad_with_space))
+8FA2C38FA2C320
+select hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C3 as char) as char(3) pad_with_space))
+408FA2C320
+select hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space));
+hex(weight_string(cast(0x408FA2C38FA2C3 as char) as char(3) pad_with_space))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x408FA2C38FA2C38FA2C3 as char) as char(3)))
+408FA2C38FA2C3
+select hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)));
+hex(weight_string(cast(0x40408FA2C38FA2C38FA2C3 as char) as char(3)))
+40408FA2C3
--- 1.17/mysql-test/extra/binlog_tests/ctype_cp932.test 2007-03-07 13:24:04 +04:00
+++ 1.18/mysql-test/extra/binlog_tests/ctype_cp932.test 2007-03-16 16:08:23 +04:00
@@ -438,3 +438,13 @@
+
+--echo End of 5.1 tests
+
+set names cp932;
+--source include/weight_string.inc
+--source include/weight_string_8140.inc
+
+set collation_connection=cp932_bin;
+--source include/weight_string.inc
+--source include/weight_string_8140.inc
--- 1.9/mysql-test/t/ctype_eucjpms.test 2006-03-23 14:03:31 +04:00
+++ 1.10/mysql-test/t/ctype_eucjpms.test 2007-03-16 16:08:23 +04:00
@@ -380,3 +380,16 @@
# the next character, which is a single byte character 0x41.
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
+--echo End of 5.1 tests
+
+set names eucjpms;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8EA1.inc
+--source include/weight_string_8FA2C3.inc
+
+set collation_connection=eucjpms_bin;
+--source include/weight_string.inc
+--source include/weight_string_A1A1.inc
+--source include/weight_string_8EA1.inc
+--source include/weight_string_8FA2C3.inc
--- 1.16/strings/ctype-cp932.c 2007-01-24 21:57:04 +04:00
+++ 1.17/strings/ctype-cp932.c 2007-03-16 16:08:24 +04:00
@@ -274,28 +274,37 @@
}
-
-static int my_strnxfrm_cp932(CHARSET_INFO *cs __attribute__((unused)),
- uchar *dest, uint len,
- const uchar *src, uint srclen)
+/*
+static int
+my_strnxfrm_cp932(CHARSET_INFO *cs __attribute__((unused)),
+ uchar *dst, uint dstlen, uint nweights,
+ const uchar *src, uint srclen, uint flags)
{
- uchar *d_end = dest + len;
- uchar *s_end = (uchar*) src + srclen;
- while (dest < d_end && src < s_end)
+ uchar *d0= dst;
+ uchar *de= dst + dstlen;
+ const uchar *se= src + srclen;
+ my_bool bin= test(cs->state & MY_CS_BINSORT);
+
+ for ( ; dst < de && src < se && nweights; nweights--)
{
- if (ismbchar_cp932(cs,(char*) src, (char*) s_end))
+ if (ismbchar_cp932(cs,(const char*) src, (const char*) se))
{
- *dest++ = *src++;
- if (dest < d_end && src < s_end)
- *dest++ = *src++;
+ *dst++= *src++;
+ if (dst < de && src < se)
+ *dst++ = *src++;
}
else
- *dest++ = sort_order_cp932[(uchar)*src++];
+ *dst++= bin ? *src++ : sort_order_cp932[(uchar)*src++];
}
- if (len > srclen)
- bfill(dest, len - srclen, ' ');
- return len;
+ if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
+ {
+ uint fill_length= min((uint) (de - dst), nweights);
+ bfill(dst, fill_length, ' ');
+ dst+= fill_length;
+ }
+ return dst - d0;
}
+*/
/*
@@ -5454,7 +5463,7 @@
NULL, /* init */
my_strnncoll_cp932,
my_strnncollsp_cp932,
- my_strnxfrm_cp932,
+ my_strnxfrm_mb,
my_strnxfrmlen_simple,
my_like_range_cp932,
my_wildcmp_mb, /* wildcmp */
@@ -5465,6 +5474,22 @@
};
+static MY_COLLATION_HANDLER my_collation_cp932_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -5558,7 +5583,7 @@
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_cp932_bin_handler
};
#endif
--- 1.17/strings/ctype-eucjpms.c 2007-01-24 21:57:04 +04:00
+++ 1.18/strings/ctype-eucjpms.c 2007-03-16 16:08:24 +04:00
@@ -8641,7 +8641,7 @@
NULL, /* init */
my_strnncoll_simple,/* strnncoll */
my_strnncollsp_simple,
- my_strnxfrm_simple, /* strnxfrm */
+ my_strnxfrm_mb, /* strnxfrm */
my_strnxfrmlen_simple,
my_like_range_simple,/* like_range */
my_wildcmp_mb, /* wildcmp */
@@ -8651,6 +8651,23 @@
my_propagate_simple
};
+
+static MY_COLLATION_HANDLER my_collation_eucjpms_bin_handler =
+{
+ NULL, /* init */
+ my_strnncoll_mb_bin,
+ my_strnncollsp_mb_bin,
+ my_strnxfrm_mb,
+ my_strnxfrmlen_simple,
+ my_like_range_mb,
+ my_wildcmp_mb_bin,
+ my_strcasecmp_mb_bin,
+ my_instr_mb,
+ my_hash_sort_mb_bin,
+ my_propagate_simple
+};
+
+
static MY_CHARSET_HANDLER my_charset_handler=
{
NULL, /* init */
@@ -8746,7 +8763,7 @@
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
- &my_collation_mb_bin_handler
+ &my_collation_eucjpms_bin_handler
};
| Thread |
|---|
| • bk commit into 5.1 tree (bar:1.2474) | bar | 16 Mar |