4.6.3 Добавление набора символов
Снабдить MySQL новым набором символов можно следующим образом.
Определите, является ли новый набор символов простым или сложным. Если для
работы с этим набором никаких специальных процедур обработки строк и
поддержки многобайтовых символов не требуется, он является простым. Если
вышеперечисленные возможности необходимы, этот набор символов относится к
сложным.
Например, наборы latin1
и danish
- простые, а big5
и czech
- сложные.
Для всех приведенных ниже примеров предполагается, что используемый набор
символов называется MYSET
.
Для создания простого набора достаточно сделать следующее:
-
Вставьте имя
MYSET
в конец файла `sql/share/charsets/Index' и присвойте
этому набору символов уникальный номер.
-
Создайте файл `sql/share/charsets/MYSET.conf'. (в качестве основы можно
использовать файл `sql/share/charsets/latin1.conf'). Правила составления
этого файла очень просты:
-
Комментарием считается целая строка, начинающаяся с символа `#'.
-
Слова разделяются любым количеством непечатаемых символов.
-
При определении набора символов каждое слово должно представлять собой
число в шестнадцатеричной системе счисления.
-
Массив ctype занимает первых 257 слов. За ним следуют массивы
to_lower
, to_upper
и sort_order
, каждый из которых занимает 256 слов.
See section 4.6.4 Массивы определения символов.
-
Добавьте имя набора символов в списки
CHARSETS_AVAILABLE
и
COMPILED_CHARSETS
файла `configure.in'.
-
Перенастройте, перекомпилируйте и протестируйте систему.
Для создания сложного набора необходимо выполнить следующие действия:
-
Создайте файл strings/ctype-MYSET.c в исходном дистрибутиве MySQL.
-
Вставьте имя MYSET в конец файла sql/share/charsets/Index и присвойте
этому набору символов уникальный номер.
-
Просмотрите один из существующих файлов ctype-*.c
(например strings/ctype-big5.c) и узнайте, что нужно определить. Не
забывайте, что имена массивов в вашем файле должны быть похожи на
следующие: ctype_MYSET, to_lower_MYSET и т.п. Эти имена соответствуют
именам массивов из простого набора символов (see section 4.6.4 Массивы определения символов).
-
В начале файла целесообразно поместить комментарий наподобие
следующего:
/*
этот комментарий разбирается configure для создания ctype.c,
поэтому не меняйте его, если не уверены в правильности своих действий.
*
.configure. number_MYSET=MYNUMBER
.configure. strxfrm_multiply_MYSET=N
.configure. mbmaxlen_MYSET=N
*/
Программа configure использует этот комментарий для линкования набора
символов с библиотекой MySQL. Значение строк strxfrm_multiply и mbmaxlen
будет разъяснено ниже. Использовать их нужно только в том случае, если вам
нужны функции для сортировки строк или работы с многобайтовыми наборами
символов соответственно.
-
После этого нужно создать некоторые из следующих функций:
my_strncoll_MYSET()
my_strcoll_MYSET()
my_strxfrm_MYSET()
my_like_range_MYSET()
See section 4.6.5 Поддержка упорядочивания строк.
-
Добавьте имя набора символов в списки
CHARSETS_AVAILABLE
и
COMPILED_CHARSETS
файла `configure.in'.
-
Перенастройте, перекомпилируйте и протестируйте систему.
Более подробные инструкции приведены в файле `sql/share/charsets/README'.
Если вы хотите, чтобы ваш набор символов был включен в комплект поставки
MySQL, вышлите патч с ним по адресу internals@lists.mysql.com.