71f2d7df

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


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

  • metaphon() возвращает мета-строку для строкового параметра. Это похоже на soundex, но больше заточено под английский.
  • myfunc_double() возвращает сумму ASCII-значений символов в параметрах, поделенную на сумму длин этих параметров.
  • myfunc_int() возвращает сумму длин параметров.
  • sequence([const int]) возвратит последовательность, начинающуюся с заданного числа или с 1, если никакого числа задано не было.
  • lookup() возвращает IP-адрес.
  • reverse_lookup() возвращает hostname для IP-адреса. Функция может быть вызвана со строкой "xxx.xxx.xxx.xxx" или с 4 числами.
  • Динамически загружаемый файл должен компилироваться как разделяемый объектный файл, используя команду:

    shell> gcc -shared -o udf_example.so myfunc.cc

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

    shell> make udf_example.o

    Вы должны выполнить команду компиляции, подобную одной из тех, что отображает make, за исключением того, что Вы должны удалить опцию -c близко к концу строки и добавить -o udf_example.so в самый конец строки. На некоторых системах удалять -c не надо, пробуйте.

    Как только Вы скомпилируете общедоступный объект, содержащий UDF, Вы должны установить его и сообщить MySQL о расширении функциональности. Компиляция общедоступного объекта из udf_example.cc производит файл с именем udf_example.so (точное имя может изменяться от платформы к платформе). Скопируйте этот файл в некоторый каталог, где ищет файлы ld, например, в /usr/lib. На многих системах Вы можете устанавливать системную переменную LD_LIBRARY или LD_LIBRARY_PATH, чтобы указать каталог, где Вы имеете Ваши файлы функции UDF. Руководство на dlopen сообщает Вам, которую переменную Вы должны использовать на Вашей системе. Вы должны установить это в mysql.server или в safe_mysqld и перезапустить mysqld.



    Содержание раздела