|
Программирование >> Создание клиентов mysql
Создание наборов символов 547 # Массив 00 01 10 11 20 21 30 31 40 41 50 51 60 41 50 51 80 81 90 91 АО А1 ВО В1 СО С1 DO D1 СО С1 DO Dl Массив 00 01 10 11 20 21 30 31 40 41 50 51 60 41 50 51 80 81 90 91 АО А1 ВО В1 41 41 44 4Е 41 41 44 4Е to upper 02 03 12 13 22 23 32 33 42 43 52 53 42 43 52 53 82 83 92 93 А2 A3 В2 ВЗ С2 СЗ D2 D3 C2 C3 D2 D3 (должен 04 05 14 15 24 25 34 35 44 45 54 55 44 45 54 55 84 85 94 95 А4 А5 В4 В5 С4 С5 D4 D5 C4 C5 D4 D5 содержать 25 6 06 07 08 09 16 17 18 19 26 27 28 29 36 37 38 39 46 47 48 49 56 57 58 59 46 47 48 49 56 57 58 59 86 87 88 89 96 97 98 99 А6 А7 А8 А9 В6 В7 В8 В9 С6 С7 С8 С9 D6 D7 D8 D9 C6 C7 C8 C9 D6 F7 D8 D9 элементов). OA 0В ОС 1А 1В 1C 2А 2В 2С ЗА ЗВ ЗС 4А 4В 4С 5А 5В 5С 4А 4В 4С 5А 7В 7С 8А 8В 8С 9А 9В 9С АА АБ АС ВА ВВ ВС СА СБ СС DA DB DC СА СВ СС DA DB DC sort order (должен содержать 256 02 03 04 05 06 07 08 09 OA OB ОС 12 13 14 15 16 17 18 19 lA IB 1С 22 23 24 25 26 27 28 29 2A 2B 2C 32 33 34 35 36 37 38 39 ЗА 3В ЗС 42 43 44 45 46 47 48 49 4А 4В 4С 52 53 54 55 56 57 58 59 5А 5В 5С 42 43 44 45 46 47 48 49 4А 4В 4С 52 53 54 55 56 57 58 59 5А 7В 7С 82 83 84 85 86 87 88 89 8А 8В 8С 92 93 94 95 96 97 98 99 9А 9В 9С А2 A3 А4 А5 А6 А7 А8 А9 АА АВ AC В2 ВЗ В4 В5 В6 В7 В8 В9 ВА ВВ ВС 41 41 5С 5В 5С 43 45 45 45 45 49 4F 4F 4F 4F 5D D7 D8 55 55 55 59 41 41 5С 5В 5С 43 45 45 45 45 49 4F 4F 4F 4F 5D F7 D8 55 55 55 59
Вторая группа значений представляет собой таблицу ASCII, предназначенную для перевода символов в нижний регистр. Например, символ в позиции 0x41 - это прописная буква А, но ей соответствует значение 0x61, т.е. строчная а. Третья группа значений определяет таблицу ASCII для перевода символов в верхний регистр. Последняя таблица задает порядок сортировки и обычно совпадает с третьей таблицей. Если истинный порядок сортировки невозможно отразить в столь простой таблице, то необходимо написать специальные функции сортировки. Для этого нужно создать файл в каталоге strings дерева MySQL. Здесь же находятся файлы всех остальных наборов символов, например ctype-bigc. Программа MySQL ищет в этом файле пять функций и четыре массива. Имена всех функций и массивов включают стандартный префикс и название набора. В листинге 31.3 показаны прототипы функций и определения массивов для набора символов big5. uchar NEAR ctype big5[257] uchar NEAR to lower big5[1 uchar NEAR to upper big5[] uchar NEAR sort order big5[] my bool my like range big5( const char *ptr, uint ptrlength, pchar escape, uint reslength, char *inin str, char *max str, uint *n:iin length, uint *max length) int my strcoll big5 ( const uchar * si, const uchar * s2) int my strnncoll big5 ( const uchar * si, int lenl, const uchar * s2, int len2) int my strnxfrm big5( uchar * dest, uchar * src, int len, int srclen) int my strxfrm big5( uchar * dest, uchar * src, int len) Создание функций 549 Четыре функции осуществляют сравнение строк. Функция с префиксом my like range находит наименьшую и наибольшую строки (с учетов стра), соответствующие выражению аторе LIKE. Само выражение передается в аргумента г. Аргумент ptr length определяет ину выражения. Содержимое наименьшей и наибольшей строк заносится в аргументы min str и max str соответственно. Функции с префиксами col 1 псо11 служат аналогами обычных функции о 11 () о11 () языка С, которые, в свою очередь, являются версиями функций и учитывающими региональные установки. Функции с префиксами rxfrin nxfrm эмулируют стандартные функции frm() frra(). Получить о них более подробную информацию можно в man-файлах UNIX. В начало файла нужно добавить комментарий, подобнхй тому, что показан в листинге 31.4. На основании строк, приведенныхх в комментарии, сценарии igure включает набор символов в клиентскую библиотеку. Переменная ltiply Ha6qp задается в том случае, когда у набора символов есть свои функции сортировки строк. Она определяет максимальный коэффициент удлинения при ее прохождении через функцию с префиксов xfrm . Как следует из листинга, строки в кодировке big5 не растягиваются. Если в набор входят многобайтовые символы, потребуется определить переменную Она задает максимально возможное число байтов в представлении символа. Например, в набор big5 входят двухбайтовые символы. Эти строки анализируются сценарием configure при создании файла ctype.c, поэтому не меняйте их без веских оснований. .configure, strxfrm multiply big5=l .configure, mbmaxlen big5=2 Все, что осталось теперь сделать, - это добавить имя набора в списки CHARSETS AVAILABLE и COMPILEDCHARSETS в файл ure. in и перекомпилировать программу. Активизировать доступные наборы символов можно с помощью опций командной строки, конфигурационного файла или SQL-инструкций, как рассказывалось в главах 13, Инструкции SQL , и 14, Утилиты командной строки . Создание функций В программу MySQL можно добавить новые функции, которые будут ваться точно так как и встроенные функции, описанные в главе Встроенные функции . Существуют два способа создания таких функций. Первый - это включение функции непосредственно в исходный код второй - определение функции в формате (User-Definable пользовательская функция). Второй способ подходит, когда функцию требуется хранить и отлаживать отдельно от утилит MySQL. Код функции компилируется в виде библиотечного модуля, который загружа-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |