Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел обсуждает процедуру для того, чтобы добавить набор символов к MySQL. Надлежащая процедура зависит от того, прост ли набор символов или сложен:
Если набор символов не нуждается в специальных строковых подпрограммах сопоставления для того, чтобы сортировать и не нуждается в многобайтовой символьной поддержке, это просто.
Если набор символов нуждается в любой из тех функций, это сложно.
Например, greek
и swe7
простые наборы символов, тогда
как big5
и czech
сложные наборы символов.
Чтобы использовать следующие инструкции, у Вас должно быть исходное распределение MySQL. В инструкциях, MYSET
представляет имя набора символов, который Вы хотите добавить.
Добавьте a <charset>
элемент для MYSET
к sql/share/charsets/Index.xml
файл. Используйте существующее содержание в
файле как руководство по добавлению нового содержания. Частичное перечисление для latin1
<charset>
элемент следует:
<charset name="latin1"> <family>Western</family> <description>cp1252 West European</description> ... <collation name="latin1_swedish_ci" id="8" order="Finnish, Swedish"> <flag>primary</flag> <flag>compiled</flag> </collation> <collation name="latin1_danish_ci" id="15" order="Danish"/> ... <collation name="latin1_bin" id="47" order="Binary"> <flag>binary</flag> <flag>compiled</flag> </collation> ...</charset>
<charset>
элемент должен перечислить все сопоставления для набора
символов. Они должны включать, по крайней мере, двоичное сопоставление и значение по умолчанию
(основное) сопоставление. Сопоставление значения по умолчанию часто называют, используя суффикс
general_ci
(общий, нечувствительный к регистру). Для двоичного
сопоставления возможно быть сопоставлением значения по умолчанию, но обычно они отличаются. У
сопоставления значения по умолчанию должен быть a primary
флаг. У
двоичного сопоставления должен быть a binary
флаг.
Следует присвоить уникальный Идентификационный номер каждому сопоставлению. Диапазон ID с 1024 до 2047 резервируется для определяемых пользователем сопоставлений. Чтобы найти максимум в настоящий момент используемых ID сопоставления, используйте этот запрос:
SELECT MAX(ID) FROM INFORMATION_SCHEMA.COLLATIONS;
Этот шаг зависит от того, добавляете ли Вы простой или сложный набор символов. Простой набор символов требует только конфигурационного файла, тогда как сложный набор символов требует исходного файла C, который определяет функции сопоставления, многобайтовые функции, или обоих.
Для простого набора символов создайте конфигурационный файл,
, это описывает свойства набора символов.
Создайте этот файл в MYSET
.xmlsql/share/charsets
каталог. Можно использовать
копию latin1.xml
как основание для этого файла. Синтаксис для файла
очень прост:
Комментарии пишутся как обычные XML-комментарии (
<!--
). text
-->
Слова в пределах <map>
элементы
массива разделяются произвольным количеством пробела.
Каждое слово в пределах <map>
элементы массива должны быть числом в шестнадцатеричном формате.
<map>
элемент массива для <ctype>
у элемента есть 257 слов. Другой <map>
элементы массива после того, как у этого есть 256
слов. См. Раздел 10.3.1, "Символьные
Массивы Определения".
Для каждого сопоставления, перечисленного в <charset>
элемент для набора символов в Index.xml
,
должен
содержать a MYSET
.xml<collation>
элемент, который определяет
символьное упорядочивание.
Для сложного набора символов создайте исходный файл C, который описывает свойства набора символов и определяет подпрограммы поддержки, необходимые, чтобы должным образом выполнить операции на наборе символов:
Создайте файл ctype-
в MYSET
.cstrings
каталог. Смотрите на один из существующих ctype-*.c
файлы (такой как ctype-big5.c
) видеть что потребности быть определенным. У
массивов в Вашем файле должны быть имена как ctype_
, MYSET
to_lower_
, и
так далее. Они соответствуют массивам для простого набора символов. См. Раздел
10.3.1, "Символьные Массивы Определения". MYSET
Для каждого <collation>
элемент,
перечисленный в <charset>
элемент для набора символов в
Index.xml
, ctype-
файл должен обеспечить
реализацию сопоставления. MYSET
.c
Если набор символов требует строковых функций сопоставления, см. Раздел 10.3.2, "Строковая Поддержка Сопоставления Сложных Наборов символов".
Если набор символов требует многобайтовой символьной поддержки, см. Раздел 10.3.3, "Многобайтовая Символьная Поддержка Сложных Наборов символов".
Измените конфигурационную информацию. Используйте существующую конфигурационную
информацию в качестве руководства по добавляющей информации для MYSYS
. Пример здесь предполагает, что у набора символов
есть значение по умолчанию и двоичные сопоставления, но больше строк необходимо если MYSET
имеет дополнительные сопоставления.
Редактирование mysys/charset-def.c
, и
"зарегистрируйте"
сопоставления для нового набора символов.
Добавьте эти строки к разделу "объявления":
#ifdef HAVE_CHARSET_MYSET
extern CHARSET_INFO my_charset_MYSET
_general_ci;extern CHARSET_INFO my_charset_MYSET
_bin;#endif
Добавьте эти строки к "регистрационному" разделу:
#ifdef HAVE_CHARSET_MYSET
add_compiled_collation(&my_charset_MYSET
_general_ci); add_compiled_collation(&my_charset_MYSET
_bin);#endif
Если набор символов использует ctype-
, редактирование MYSET
.cstrings/CMakeLists.txt
и добавьте ctype-
к
определению MYSET
.cSTRINGS_SOURCES
переменная.
Редактирование cmake/character_sets.cmake
:
Добавить MYSET
к
значению с CHARSETS_AVAILABLE
в алфавитном порядке.
Добавить MYSET
к
значению CHARSETS_COMPLEX
в алфавитном порядке. Это
необходимо даже для простых наборов символов, или CMake
не будет распознавать -DDEFAULT_CHARSET=
.MYSET
Реконфигурируйте, перекомпилируйте, и тест.