summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-03-05 16:43:10 +0400
committerunknown <bar@bar.mysql.r18.ru>2003-03-05 16:43:10 +0400
commita6597812a8661841d642303ad5d945bb0b7fb6c2 (patch)
tree52371dd625fda3d1fb00ecdd6e3cb8260fabeb66 /mysys
parent64d48cd6d1d668256bdb639c6467be6112c58164 (diff)
downloadmariadb-git-a6597812a8661841d642303ad5d945bb0b7fb6c2.tar.gz
New fields in CHARSET_INFO structure to optimize searching for
binary and primary collations in the future
Diffstat (limited to 'mysys')
-rw-r--r--mysys/charset.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/mysys/charset.c b/mysys/charset.c
index cfe1dcefcaf..b1abd460c2e 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -257,7 +257,13 @@ static int add_collation(CHARSET_INFO *cs)
return MY_XML_ERROR;
bzero((void*)all_charsets[cs->number],sizeof(CHARSET_INFO));
}
+
+ if (cs->primary_number == cs->number)
+ cs->state |= MY_CS_PRIMARY;
+ if (cs->primary_number == cs->number)
+ cs->state |= MY_CS_BINSORT;
+
if (!(all_charsets[cs->number]->state & MY_CS_COMPILED))
{
simple_cs_copy_data(all_charsets[cs->number],cs);
@@ -267,6 +273,10 @@ static int add_collation(CHARSET_INFO *cs)
all_charsets[cs->number]->state |= MY_CS_LOADED;
}
}
+ else
+ {
+ all_charsets[cs->number]->state |= cs->state;
+ }
cs->number= 0;
cs->name= NULL;
cs->state= 0;