Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
166
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

552 Глава Расширение возможностей MySQL

Поле

 

Описание

 

 

my_bool

 

Указывает на

может ли функция возвращать пус

 

 

тое значение. Если один из аргументов функции

 

 

жет быть пустым, в это поле будет записана единица

unsigned

decimals

Содержит количество цифр после запятой, если

 

 

функция возвращает числовое значение. Будет ука

 

 

зана максимальная точность среди всех аргументов

unsigned

int

Определяет

максимальную длину

возвращаемой

 

 

строки

 

 

char *ptr

С помощью этого указателя осуществляется обмен

 

 

данными между инициализирующей

и

 

 

другими двумя функциями. Например,

 

 

лить блок памяти и записать сюда адрес этого блока

Если функция возвращает пустое значение, аргумент is_null должен быть равен 1. В случае ошибки в аргумент error записывается значение 1. В результате текущая за пись и все последующие станутпустыми.

Описание структуры UDF_ARGS приведено в табл. 31.5. Через эту структуру про грамма MySQL передает аргументы функции.

Поле

Описание

unsigned int arg_count

Содержит число аргументов функции. Если это

 

значение фиксировано, проверьте его в ини

 

циализирующей функции

Item_result *arg_type

Содержит массив типов аргументов. Возможные

 

значения массива таковы: INT_RESULT, REAL_

 

RESULT и STRING_RESULT. Можно осуществ

 

лять проверку типов и в случае несовпадения

 

либо возвращать признак ошибки, либо коррек

 

тировать содержимое массива, приводя аргу

 

менты к нужному типу

char **args

Содержит массив значений аргументов. Если

 

гумент является строкой, в массиве будет хра

 

ниться указатель на строку. Длины строковых

 

гументов приведены в массиве lengths. Если ар

 

представляет собой целое число или

 

число с плавающей запятой, приведите значение

 

типу long long или double соответственно

Создание процедур 553

Поле

Описание

unsigned long *lengths

Содержит массив длин аргументов. В инициали

 

зирующей функции эти значения устанавлива

 

ются по максимуму на основании определений

 

столбцов. В основной функции длины строко

 

вых аргументов являются точными

Инициализирующая функция возвращает ненулевое значение в случае ошибки. Если обнаружена ошибка, скопируйте текст поясняющего значения в аргумент message. Максимальная длина сообщения хранится в переменной но нужно стараться, чтобы длина сообщения не превышала 80 символов. Тогда оно сможет быть отображено на любом стандартном терминале.

Если вы хотите поделиться с другими пользователями своими функциями, зареги

стрируйте их на узле

Я, к примеру,

нашел там очень интересную

осуществляющую вызов методов

Создание процедур

Процедуры MySQL выполняют операции над результатами запросов. Процедура ак тивизируется при наличии в конце инструкции SELECT ключевого слова PROCEDURE. В настоящий момент в MySQL входит единственная процедура analyse описанная в главе 12, "Встроенные функции". Разрешается создавать собственные процедуры, включая их в наэтапе компиляции.

Процедуры появились в MySQL версии 3.21, но пока что не вызвали особого энтузиаз ма. Писать их оказалось слишком сложно для большинства пользователей. Например, для создания процедуры на C++ требуется определить класс, производный от класса Procedure. Код последнего находится в файлах и Процедураanalyse реализованавфайле

С другой можно воспользоваться библиотекой (www.fastflow.it/ которая позволяет динамически загружать процедуры, написанные на языке Для запуска сценария LUA в MySQL нужно вызвать функцию

LUA указав ей имя исходного файла, где содержится определение процедуры.

РЕСУРСЫ В INTERNET

Вэтом приложении.

Официальные списки рассылки

Архивы списков рассылки

Web узлы

Отчеты об ошибках

Приложение

вэтом приложении приведен перечень ресурсов, касающихся MySQL, которые можно найти в Internet.

Официальные списки рассылки

Компания MySQL ведет несколько списков рассылки, посвященных MySQL. Большинство из них доступно в виде дайджестов, т.е. каждый день присылается письмо, содержащее список сообщений за последние 24 часа. Чтобы подписаться на список, отправьте пустое письмо по специальному адресу список subscribe Если нужно подписаться на получение дайджеста, добавьте к имени списка суффикс digest. В ответ сервер рассылки пришлет подтверждающее письмо, на которое нужно ответить. Свои сообщения шлите на сервер, указывая имя списка, например Чтобы отказаться от рассылки, отпра вьте пустое письмо по адресу com.

mysql.com

В рамках этого списка распространяются анонсы опоявлении новых версий MySQL.

mysql:subscribe@lists. mysql. com

Это общий список обсуждения всех аспектов программы MySQL, трафик в кото ром весьма высок. Чтобы получать ежедневные дайджесты, отправьте запрос по ад

mysql.com

В этот список направляются отчеты о найденных ошибках в программе. Адрес для получения дайджестов следующий: bugs digest subscribe@lists com.

556 Приложение А. Ресурсы в Internet

internals:subscribe@lists. com

Это список для разработчиков MySQL. Адрес для получения дайджестов щий:

mysql. com

Это список для обсуждения вопросов совместного применения MySQL и Java, имущественно посвященный JDBC. Адрес для получения дайджестов следующий:

mysql. com

Это список для обсуждения вопросов работы MySQL на платформе Windows. Адрес для получения дайджестов следующий: win32 digest subscribe@lists

mysql. com

Это список для обсуждения драйвераODBC, имеющегося в MySQL. Адрес для по лучения дайджестов следующий: com.

plusplus:subscribe@lists. mysql. com

Это список для обсуждения библиотеки MySQL++. Адрес для получения дайдже стов следующий:

mysql. com

Это список для обсуждения средств языка Perl и модуля DBI, предназначенных для взаимодействия с MySQL. Адрес для получения дайджестов следующий:

Архивы списков рассылки

Те, кто пытаются решить связанную с MySQL, могут заглянуть в архивы списковрассылки, где часто можно найти ответы на самые каверзные вопросы.

Официальные архивы

http://lists.mysql.com/

AIMS

Web узлы 557

Yahoo

Web узлы

Ниже приведен перечень Web узлов, которые могут заинтересовать пользователей MySQL.

MySQL

www.mysql.com

Это официальный Web узел компании MySQL Отсюда можно начинать поиск информации.

www.

Здесь публикуются статьи, посвященные различным Web технологиям.

lib.

Это реестр

html

Здесь обсуждаются различные аспекты MySQL, которые традиционно вызывали недоверие у пользователей других СУБД.

Реляционные базы данных

www.palslib.com

Здесь содержится перечень информационных ресурсов, посвященных реляцион ным СУБД.

www. com

Здесь публикуются различные критические статьи о базах данных.

www. com

Здесь рассматриваются вопросы объектно реляционной модели.

www. com

Это Web узел Скотта где содержится много интересных документов, ка сающихся реляционных базданных.

558 Приложение А. Ресурсы в Internet

htm

Эта Web страница посвящена стандартам языка SQL.

www.sql.org

Здесь можно найти официальную информацию о языке SQL.

Отчеты ошибках

Разработчики MySQL ведутспециальный список рассылки (bugs@l ists com), в котором публикуются отчеты об ошибках программы. Можно самостоятельно посылать туда свои сообщения, но лучше пользоваться сценарием который способен томатически генерировать информацию о системе. Чем точнее будут сведения о конфи гурации, тем проще будет разработчикам разобраться в проблеме.

Прежде чем сообщать об ошибке, проверьте интерактивную документацию. Неко торые проблемы уже известны и описаны, особенно те, которые касаются особенно стей конкретных операционных систем. На Web узлах можно также встретить ком ментарии пользователей.

Далее обратитесь в архивы списков рассылки. Не исключено, что с подобной блемой уже сталкивался . Ответы на жалобы пользователей быстро публикуют ся в списках.

В разделе 1.6.2.3 интерактивной документации описано, какую информацию необ ходимо включить в отчет об ошибке.

ПРАВОВЫЕ

АСПЕКТЫ

В этом

Лицензирование программы MySQL Общая лицензия GNU

Стабильность

вэтом приложении рассматриваются вопросы, касающиеся коммерческого ис пользования программы MySQL.

ЛицензированиепрограммыMySQL

Текущие версии MySQL доступны на условиях общей лицензии GNU (GNU Gen eral Public License), которая широко популярна при распространении программ с открытыми исходными кодами. Любой пользователь может свободно использовать и модифицировать программу без каких либо ограничений, при условии, что програм ма не передается другим пользователям. В случае распространения программы может потребоваться придерживаться определенных ограничений. Как правило, если грамма модифицируется, то наряду с откомпилированной версией необходимо рас пространять также ее исходные коды. Этого можно избежать, если приобрести у компании MySQL коммерческую лицензию. Информация о процедуре получения лицензии доступна на компании. Следует отметить, что стоимость ческой лицензии невысока в сравнении с другими СУБД.

Ниже приведен текст общей лицензии GNU. Дополнительную информацию о ней можно найти на

ОбщаялицензияGNU

Версия июнь 1991 года

Copyright © Free Software Foundation, Inc. 675 Mass Cambridge, MA USA

Разрешается копирование и распространение копий этого документа, но запреща ется внесение каких бы то ни было изменений в его текст.