diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-09-06 12:50:02 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-09-06 12:50:02 +0400 |
commit | ee19806b8e6bb00fa1cd547fe3e75193859d300d (patch) | |
tree | 27568e9cc17e2717785af028c65deb912731bfb9 /strings/conf_to_src.c | |
parent | e4f6fd5e1252f8c68f449fe820bae88c18bca8f5 (diff) | |
download | mariadb-git-ee19806b8e6bb00fa1cd547fe3e75193859d300d.tar.gz |
MDEV-9711 NO PAD collations
Based on the patch from Daniil Medvedev (a Google Summer of Code task)
Diffstat (limited to 'strings/conf_to_src.c')
-rw-r--r-- | strings/conf_to_src.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/strings/conf_to_src.c b/strings/conf_to_src.c index 1382ec69a0a..c7f25331534 100644 --- a/strings/conf_to_src.c +++ b/strings/conf_to_src.c @@ -338,16 +338,23 @@ print_array_ref(FILE *f, } +static const char *nopad_infix(CHARSET_INFO *cs) +{ + return (cs->state & MY_CS_NOPAD) ? "_nopad" : ""; +} + + void dispcset(FILE *f,CHARSET_INFO *cs) { fprintf(f,"{\n"); fprintf(f," %d,%d,%d,\n",cs->number,0,0); - fprintf(f," MY_CS_COMPILED%s%s%s%s%s,\n", + fprintf(f," MY_CS_COMPILED%s%s%s%s%s%s,\n", cs->state & MY_CS_BINSORT ? "|MY_CS_BINSORT" : "", cs->state & MY_CS_PRIMARY ? "|MY_CS_PRIMARY" : "", cs->state & MY_CS_CSSORT ? "|MY_CS_CSSORT" : "", cs->state & MY_CS_PUREASCII ? "|MY_CS_PUREASCII" : "", - cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : ""); + cs->state & MY_CS_NONASCII ? "|MY_CS_NONASCII" : "", + cs->state & MY_CS_NOPAD ? "|MY_CS_NOPAD" : ""); if (cs->name) { @@ -402,10 +409,11 @@ void dispcset(FILE *f,CHARSET_INFO *cs) fprintf(f," 0, /* escape_with_backslash_is_dangerous */\n"); fprintf(f," 1, /* levels_for_order */\n"); fprintf(f," &my_charset_8bit_handler,\n"); + if (cs->state & MY_CS_BINSORT) - fprintf(f," &my_collation_8bit_bin_handler,\n"); + fprintf(f," &my_collation_8bit%s_bin_handler,\n", nopad_infix(cs)); else - fprintf(f," &my_collation_8bit_simple_ci_handler,\n"); + fprintf(f," &my_collation_8bit_simple%s_ci_handler,\n", nopad_infix(cs)); fprintf(f,"}\n"); } |