Программирование >>  Создание клиентов mysql 

1 ... 174 175 176 [ 177 ] 178 179 180 ... 201


Создание наборов символов 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

. BD

5D 5Е 5F

9D

9Е 9F

Десятичное значение

значение

Описание

0x01

Прописная буква

0x02

Строчная буква

0x04

Цифра

0x08

Символ пробела

0x10

Знак пунктуации

0x20

Управляющий символ

0x40

Пусто

0x80

Шестнадцатеричная цифра



Вторая группа значений представляет собой таблицу 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. Код функции компилируется в виде библиотечного модуля, который загружа-




1 ... 174 175 176 [ 177 ] 178 179 180 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика