Spec-Zone .ru
спецификации, руководства, описания, API

22.2.4. Запись Плагинов

22.2.4.1. Краткий обзор Сменной Записи
22.2.4.2. Сменные Структуры данных
22.2.4.3. Компиляция и Установка Сменных Библиотек
22.2.4.4. Запись Полнотекстовых Плагинов Синтаксического анализатора
22.2.4.5. Запись Плагинов Демона
22.2.4.6. Запись INFORMATION_SCHEMA Плагины
22.2.4.7. Запись Полусинхронных Плагинов Репликации
22.2.4.8. Запись Контрольных Плагинов
22.2.4.9. Запись Плагинов Аутентификации
22.2.4.10. Запись Плагинов Проверки допустимости пароля

Чтобы создать сменную библиотеку, следует предоставить запрошенную информацию дескриптора, которая указывает на то, какие плагины файл библиотеки содержит, и запишите функции интерфейса для каждого плагина.

У каждого плагина сервера должен быть общий дескриптор, который предоставляет информацию сменному API, и специфичный для типа дескриптор, который предоставляет информацию о сменном интерфейсе для данного типа плагина. Структура общего дескриптора является тем же самым для всех сменных типов. Структура специфичного для типа дескриптора изменяется среди сменных типов и определяется требованиями того, что должен сделать плагин. Интерфейс плагина сервера также позволяет плагинам представить системные переменные и состояние. Эти переменные становятся видимыми через SHOW STATUS и SHOW VARIABLES операторы и соответствие INFORMATION_SCHEMA таблицы.

Для клиентских плагинов несколько отличается архитектура. У каждого плагина должен быть дескриптор, но нет никакого подразделения на отдельные общие и специфичные для типа дескрипторы. Вместо этого дескриптор начинается с фиксированного набора элементов, характерных для всех клиентских типов плагина, и общие элементы сопровождаются любыми дополнительными элементами, требуемыми реализовывать определенный сменный тип.

Можно записать плагины в C или C++ (или другой язык, который может использовать соглашения о вызовах C). Плагины загружаются и разгружаются динамически, таким образом, Ваша операционная система должна поддерживать динамическую загрузку, и Вы, должно быть, скомпилировали вызывающее приложение динамически (не статически). Для плагинов сервера это означает, что mysqld должен быть скомпилирован динамически.

Плагин сервера содержит код, который становится частью рабочего сервера, так, когда Вы пишете плагин, Вы связываетесь любым и всеми ограничениями, которые иначе применяются к записи серверного кода. Например, у Вас могут быть проблемы, если Вы пытаетесь использовать функции от libstdc++ библиотека. Эти ограничения могут измениться в будущих версиях сервера, таким образом, возможно, что обновления сервера потребуют версий плагинов, первоначально записанных для более старых серверов. Для получения информации об этих ограничениях см. Раздел 2.9.4, "MySQL Source-Configuration Options", и Раздел 2.9.5, "Контакт с проблемным MySQL Compiling".

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