terça-feira, 26 de março de 2013

Uso de Funções UDF no MySQL

Arquivos ou bibliotecas UDF - DLL em ambiente Windows e SO em ambiente Unix/Linux - contém funções, normalmente escritas em linguagem 'C' e que podem ser usadas em queries no MySQL.

O link http://dev.mysql.com/doc/refman/5.0/en/adding-functions.html fala a respeito das UDFs e o link  http://dev.mysql.com/doc/refman/5.1/en/udf-compiling.html explica como compilar uma biblioteca UDF nos ambientes Unix/Linux e Windows usando usando o make/cmake.

Para criar estes arquivos no Windows usando o Visual Studio, cabem algumas dicas:
1) Pré-requisitos:

  • Source do Mysql (diretório include);
  • SDK do Microsoft

2) Criar uma nova solução/projeto vazia (empty projetct)
3) Em propriedades do projeto (verificar se a configuração está habilitada em 'all configurations'):

  •  Project Defaults/Configuration type - Dynamic Library (.dll)
  • C/C++/General/Aditional Include Directories - Incluir os diretórios do include do MySQL e do include do Microsoft SDK
  • C/C++/Preprocessor/Preprocessor Definitions - Incluir a diretiva HAVE_DLOPEN
  • Linker/General/Additional library Directories - Incluir o diretório lib do Microsoft SDK
  • Linker/Input/Module Definition File - Referenciar o arquivo com as definições da biblioteca (arquivo .def)

Ao instalar a biblioteca criada em um servidor Windows não esquecer:
1) Colocar a DLL no diretório indicado pelo parâmetro plugin_dir (comando show variables like 'plug%')
2) Instalar o runtime do Visual C/C++ referente a versão em que foi compilado o arquivo DLL

Algumas dicas podem ser vistas - http://rpbouman.blogspot.com.br/2007/09/creating-mysql-udfs-with-microsoft.html

segunda-feira, 25 de março de 2013

Funções UDF no MySQL compiladas em Visual C/C++

Para usar funções UDF no MySQL geradas a partir de compilações Visual Studio (C/C++) é necessário que seja instalado no servidor MySQL o arquivo runtime (Redistributable Package ) respectivo a versão do Visual Studio utilizado na geração da dll.

Alguns comuns:
Visual Studio 2005 - http://www.microsoft.com/en-us/download/details.aspx?id=3387
Visual Studio 2008 - http://www.microsoft.com/en-us/download/details.aspx?id=29
Visual Studio 2010 - http://www.microsoft.com/en-us/download/details.aspx?id=5555

A inexistência do arquivo runtime não permite a instalação (criação) das funções, gerando o erro MySQL 1126.