10.4 Adding a Collation to a Character Set

A collation is a set of rules that defines how to compare and sort
character strings. Each collation in MySQL belongs to a single
character set. Every character set has at least one collation, and
most have two or more collations.

A collation orders characters based on weights. Each character in
a character set maps to a weight. Characters with equal weights
compare as equal, and characters with unequal weights compare
according to the relative magnitude of their weights.

The WEIGHT_STRING() function can be
used to see the weights for the characters in a string. The value
that it returns to indicate weights is a binary string, so it is
convenient to use
HEX(WEIGHT_STRING(str))
to display the weights in printable form. The following example
shows that weights do not differ for lettercase for the letters in
'AaBb' if it is a nonbinary case-insensitive
string, but do differ if it is a binary string:

The following sections describe how to add collations of the first
two types to existing character sets. All existing character sets
already have a binary collation, so there is no need here to
describe how to add one.

Summary of the procedure for adding a new collation:

Choose a collation ID.

Add configuration information that names the collation and
describes the character-ordering rules.

Restart the server.

Verify that the collation is present.

The instructions here cover only collations that can be added
without recompiling MySQL. To add a collation that does require
recompiling (as implemented by means of functions in a C source
file), use the instructions in
Section 10.3, “Adding a Character Set”. However, instead of adding
all the information required for a complete character set, just
modify the appropriate files for an existing character set. That
is, based on what is already present for the character set's
current collations, add data structures, functions, and
configuration information for the new collation.