Главная Свежие Последние Лучшие Контактная информация  
 
 

Категория: Расширение MySQL (18)


Расширение MySQL » Написание процедуры
9.3.2 Написание процедуры
На данный момент единственной документацией по этой теме является исходный код.
теги: sql
 


Расширение MySQL » Процедура Analyse
9.3.1 Процедура Analyse
analyse([max elements,[max memory]])

Эта процедура определена в `sql/sql_analyse.cc'. Она исследует результат запроса и возвращает анализ результатов:

max elements (по умолчанию 256) - максимальное число различных значений, которые analyse будет распознавать в столбце. Аргумент используется analyse для проверки того, является ли тип ENUM оптимальным типом столбца.
теги: SELECT, WHERE
 


Расширение MySQL » Добавление новой процедуры в MySQL
9.3 Добавление новой процедуры в MySQL

В MySQL, можно определить процедуру на C++, которая обращается к данным в запросе и изменяет их до того, как они будут посланы клиенту. Изменение может быть выполнено на построчном уровне, либо на уровне GROUP BY.

Чтобы продемонстрировать то, как это можно сделать, мы создали пример процедуры в версии MySQL 3.23.
теги: GROUP
 


Расширение MySQL » Добавление новых родных функции
9.2.3 Добавление новых родных функции

В этом разделе приведена процедура добавления новой ``родной'' функции. Следует учитывать, что в бинарную поставку ``родные'' функции добавить невозможно, поскольку эта процедура требует изменения исходного кода MySQL. Поэтому необходимо собственноручно компилировать MySQL из поставки исходного текста. Кроме того, при переходе на другую версию MySQL (например, при выпуске новой версии) все изменения придется повторить для этой новой версии.
теги: NULL, char
 


Расширение MySQL » Компиляция и установка определяемых пользователем функций
9.2.2.5 Компиляция и установка определяемых пользователем функций

Файлы, реализующие UDFы, должны компилироваться и устанавливаться на машине, где работает сервер. Эта процедура описана ниже для файла примеров UDF `udf_example.cc', входящего в поставку исходного кода MySQL. Данный файл содержит следующие функции:

metaphon() возвращает metaphon-строку для строкового аргумента. Эта строка в общем напоминает soundex-строку, но более приспособлена для английского языка.
myfunc_double() возвращает отношение суммы ASCII-значений символов своих аргументов к суммарной длине аргументов.
теги: UDF, CREATE
 


Расширение MySQL » Возвращаемые значения и обработка ошибок
9.2.2.4 Возвращаемые значения и обработка ошибок

Функция инициализации должна возвращать 0, если ошибок нет, и 1 в противном случае. Если происходит ошибка, xxx_init() должна поместить сообщение об ошибке с завершающим '\0' в параметр message. Сообщение будет возвращено клиенту. Буфер сообщения имеет длину MYSQL_ERRMSG_SIZE символов, но надо стараться, чтобы сообщение не превышало 80 символов - для соответствия ширине стандартного экрана терминала.
теги: UDF, NULL
 


Расширение MySQL » Обработка аргументов
9.2.2.3 Обработка аргументов

Параметр args указывает на структуру UDF_ARGS, содержащую перечисленные ниже поля:

unsigned int arg_count
Количество аргументов. Это значение следует проверять в функции инициализации, если необходимо, чтобы функция вызывалась с определенным количеством аргументов. Например:
if (args->arg_count != 2)
теги: UDF, STRING
 


Расширение MySQL » Последовательность вызова UDF для агрегатных функций
9.2.2.2 Последовательность вызова UDF для агрегатных функций

Ниже приведено описание функций, которые необходимо определить при создании агрегатной UDF-функции.

char *xxx_reset(UDF_INIT *initid, UDF_ARGS *args,
char *is_null, char *error);

Эта функция вызывается, когда MySQL находит первую строку в новой группе. В функции необходимо сбросить все внутренние переменные, в которых накапливаются значения, и затем установить переданный аргумент как первый аргумент в группе.
теги: UDF
 


Расширение MySQL » Последовательность вызова UDF для простых функций
9.2.2.1 Последовательность вызова UDF для простых функций

Главная функция должна быть определена, как это показано здесь. Обратите внимание на то, что тип возвращаемого значения и параметры варьируются в зависимости от того, как определена SQL-функция XXX() в команде CREATE FUNCTION - как возвращающая STRING, INTEGER или REAL:

Для STRING-функций:

char *xxx(UDF_INIT *initid, UDF_ARGS *args,
char *result, unsigned long *length,
char *is_null, char *error);
теги: char, NULL
 


Расширение MySQL » Добавление новой определяемой пользователем функции
9.2.2 Добавление новой определяемой пользователем функции

Для того чтобы работал механизм UDF, функции должны быть написаны на C или на C++, а используемая операционная система должна поддерживать динамическую загрузку. В поставку исходного кода входит файл `sql/udf_example.cc', в котором определены пять новых функций. К этому файлу следует обращаться, если нужно узнать, как работает соглашение о вызовах UDF.
теги: NULL
 


Расширение MySQL » Синтаксис CREATE FUNCTION/DROP FUNCTION
9.2.1 Синтаксис CREATE FUNCTION/DROP FUNCTION

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|REAL|INTEGER}
SONAME shared_library_name

DROP FUNCTION function_name
теги: CREATE
 


Расширение MySQL » Добавление новых функций в MySQL
9.2 Добавление новых функций в MySQL

Существует два способа добавления функций в MySQL:

Можно добавить функцию посредством интерфейса определяемых пользователем функций (user-definable function - UDF). Определяемые пользователем функции добавляются и удаляются динамически с помощью команд CREATE FUNCTION и DROP FUNCTION (see section 9.2.1 Синтаксис CREATE FUNCTION/DROP FUNCTION).
теги: CREATE, ABS
 


Расширение MySQL » Отчет об ошибках в тестовом пакете MySQL
9.1.2.3 Отчет об ошибках в тестовом пакете MySQL
Если используемая версия MySQL не проходит через тестовый пакет, следует поступать следующим образом:

Прежде всего, не отсылайте отчет об ошибке, пока не соберете максимального количества сведений по проблеме, с которой вы столкнулись!
теги: MySQL
 


Расширение MySQL » Расширение тестового пакета MySQL
9.1.2.2 Расширение тестового пакета MySQL
Для создания собственных контрольных тестов можно использовать язык mysqltest. К сожалению, полная документация по языку пока еще не написана, но мы планируем в скором времени это сделать. Можно, однако, обратиться к имеющимся контрольным тестам и использовать их в качестве примера. В качестве отправных точек должны служить следующие моменты:

Тесты должны быть расположены в mysql-test/t/*.test
теги: SELECT, SHOW
 


Расширение MySQL » Выполнение тестового пакета MySQL
9.1.2.1 Выполнение тестового пакета MySQL
Система тестирования включает в себя интерпретатор языка тестирования (mysqltest), shell-сценарий для выполнения всех тестов (mysql-test-run), сами контрольные тесты, написанные на специальном языке тестирования, и ожидаемые для них результаты.
теги: mysql
 


Расширение MySQL » Пакет тестирования MySQL
9.1.2 Пакет тестирования MySQL

До последнего времени наш основной всесторонний пакет для тестирования основывался на конфиденциальных данных заказчиков и по этой причине не был общедоступным. Процесс тестирования был открытым только частично - доступными являлись тест crash-me, содержащийся в каталоге `sql-bench' код оценки производительности на Perl DBI/DBD, и различные тесты, расположенные в каталоге `tests'.
теги: MySQL, Perl
 


Расширение MySQL » Потоки MySQL
9.1.1 Потоки MySQL
Сервер создает следующие потоки:

Поток TCP/IP-соединений обрабатывает все запросы подключения и создает новые выделенные потоки для проведения аутентификации и обработки SQL запросов для каждого соединения.
В Windows NT есть поток обслуживания именованного канала, который выполняет ту же работу, что и поток TCP/IP-соединений, но только по запросам на соединение именованного канала.
теги: Windows, INSERT
 


Расширение MySQL » Внутреннее устройство MySQL
9.1 Внутреннее устройство MySQL

В этом разделе рассматривается многое из того, что необходимо знать при работе над кодом MySQL. Если вы намерены принять участие в разработке MySQL, желаете получить доступ к самому последнему промежуточному коду версий или просто хотите
теги: MySQL
 


Страницы: [ 1 ]

Добавить в закладки:

 


  Категории
Общая информация 73
Установка MySQL 78
Учебное пособие по MySQL 33
Администрирование баз данных 98
Оптимизация в MySQL 41
Справочник по языку MySQL 75
Типы таблиц MySQL 55
Интерфейсы для MySQL 89
Расширение MySQL 18
Проблемы и распространенные ошибки 33
Привнесенные программы 6
Перенос на другие системы 15
 

  Теги
 

  Лучшее на сайте
Сравнение возможностей MySQL и PostgreSQL 442
Адаптивный хешированный индекс 381
Синтаксис оператора EXPLAIN (получение информации о SELECT) 330
Функции даты и времени 319
mysqlimport, импорт данных из текстовых файлов 316
Основные возможности MySQL 313
Запуск MySQL на Windows NT, 2000 или XP 305
Что представляет собой компания MySQL AB? 299
Типы данных DATETIME, DATE и TIMESTAMP 291
Использование символических ссылок для таблиц 260
 

  Друзья сайта
 

  Интересное
 

 
Использование материалов только при активной гиперссылке "http://sql-book.net"
Copyright 2008 http://sql-book.net Серия сайтов: "Стань умным!".