|
bool(* | init )(CHARSET_INFO *, MY_CHARSET_LOADER *, MY_CHARSET_ERRMSG *) |
|
void(* | uninit )(CHARSET_INFO *, MY_CHARSET_LOADER *) |
|
int(* | strnncoll )(const CHARSET_INFO *, const uint8_t *, size_t, const uint8_t *, size_t, bool) |
|
int(* | strnncollsp )(const CHARSET_INFO *, const uint8_t *, size_t, const uint8_t *, size_t) |
| Compare the two strings under the pad rules given by the collation. More...
|
|
size_t(* | strnxfrm )(const CHARSET_INFO *, uint8_t *dst, size_t dstlen, unsigned num_codepoints, const uint8_t *src, size_t srclen, unsigned flags) |
| Transform the string into a form such that memcmp() between transformed strings yields the correct collation order. More...
|
|
size_t(* | strnxfrmlen )(const CHARSET_INFO *, size_t num_bytes) |
| Return the maximum number of output bytes needed for strnxfrm() to output all weights for any string of the given input length. More...
|
|
bool(* | like_range )(const CHARSET_INFO *, const char *s, size_t s_length, char w_prefix, char w_one, char w_many, size_t res_length, char *min_str, char *max_str, size_t *min_len, size_t *max_len) |
|
int(* | wildcmp )(const CHARSET_INFO *, const char *str, const char *str_end, const char *wildstr, const char *wildend, int escape, int w_one, int w_many) |
|
int(* | strcasecmp )(const CHARSET_INFO *, const char *, const char *) |
|
unsigned(* | strstr )(const CHARSET_INFO *, const char *b, size_t b_length, const char *s, size_t s_length, my_match_t *match, unsigned nmatch) |
|
void(* | hash_sort )(const CHARSET_INFO *cs, const uint8_t *key, size_t len, uint64_t *nr1, uint64_t *nr2) |
| Compute a sort hash for the given key. More...
|
|
bool(* | propagate )(const CHARSET_INFO *cs, const uint8_t *str, size_t len) |
|
void(* MY_COLLATION_HANDLER::hash_sort) (const CHARSET_INFO *cs, const uint8_t *key, size_t len, uint64_t *nr1, uint64_t *nr2) |
Compute a sort hash for the given key.
This hash must preserve equality under the given collation, so that a=b => H(a)=H(b). Note that this hash is used for hash-based partitioning (PARTITION KEY), so you cannot change it except when writing a new collation; it needs to be unchanged across releases, so that the on-disk format does not change. (It is also used for testing equality in the MEMORY storage engine.)
nr1 and nr2 are both in/out parameters. nr1 is the actual hash value; nr2 holds extra state between invocations.
int(* MY_COLLATION_HANDLER::strnncollsp) (const CHARSET_INFO *, const uint8_t *, size_t, const uint8_t *, size_t) |
Compare the two strings under the pad rules given by the collation.
Thus, for NO PAD collations, this is identical to strnncoll with is_prefix set to false. For PAD SPACE collations, the two strings are conceptually extended infinitely at the end using space characters (0x20) and then compared under the collation's normal comparison rules, so that e.g 'a' is equal to 'a '.