Los ficheros implementando UDFs deben compilarse e instalarse
          en el equipo donde corre el servidor. Este proceso se describe
          a continuación para el fichero UDF de ejemplo
          sql/udf_example.cc que se incluye en la
          distribución fuente de MySQL.
        
Las instrucciones siguientes son para Unix. Las instructiones para Windows se dan posteriormente en esta sección.
          El fichero udf_example.cc contiene las
          siguientes funciones:
        
              metaphon() retorna una cadena de
              caracteres metaphon del argumento de cadena de caracteres.
              Esto es algo como una cadena de caracteres soundex, pero
              más ajustado al inglés.
            
              myfunc_double() retorna la suma de los
              valores ASCII de los caracteres en los argumentos,
              divididos por la suma de la longitud de los argumentos.
            
              myfunc_int() retorna la suma de la
              longitud de los argumentos.
            
              sequence([const int]) retorna una
              secuencia empezando por el número dado o 1 si no se da
              ningún número.
            
              lookup() retorna la IP para un nombre
              de equipo.
            
              reverse_lookup() retorna el nombre de
              equipo para una IP. La función puede llamarse con un
              único argumento de cadena de caracteres de la forma
              'xxx.xxx.xxx.xxx' o con cuatro
              números.
            
Un fichero cargable dinámicamente debe compilarse como fichero objeto compartible, usando un comando como:
shell> gcc -shared -o udf_example.so udf_example.cc
          Si usa gcc, debe ser capaz de crear
          udf_example.so con un comando más
          simple:
        
shell> make udf_example.so
          Puede determinar fácilmente las opciones de compilación
          adecuadas para su sistema ejecutando este comando en el
          directorio sql del árbol fuente de
          MySQL:
        
shell> make udf_example.o
          Debe ejecutar un comando de compilación similar al que
          muestra make , excepto que debe quitar la
          opción -c cerca del final de la línea y
          añadir -o udf_example.so al final de la
          línea. (En algunos sistemas, puede necesitar dejar
          -c en el comando.)
        
          Tras compilar un objeto compartido conteniendo UDFs, debe
          instalarlo y comunicarlo a MySQL. Compilar un objeto
          compartido de udf_example.cc produce un
          fichero llamado algo como udf_example.so
          (el nombre exacto puede variar de plataforma a plataforma).
          Copie este fichero en un directorio como
          /usr/lib en el que busque el lincador
          dinámico del sistema (en tiempo de ejecución), o añada el
          directorio en el que está el objeto compartido en el fichero
          de configuración del lincador (por ejemplo,
          /etc/ld.so.conf).
        
El nombre del lincador depende del sistema (por ejemplo, ld-elf.so.1 en FreeBSD, ld.so en Linux, o dyld en Mac OS X). Consulte su documentación del sistema para información acerca del nombre del lincador y cómo configurarlo.
          En muchos sistemas, puede cambiar las variables de entorno
          LD_LIBRARY o
          LD_LIBRARY_PATH para que apunten al
          directorio donde tiene los ficheros de su UDF. La página de
          manual dlopen explica qué variables debe
          usar en su sistema. Debe inicializarla en los scripts de
          arranque mysql.server o
          mysqld_safe y reiniciar
          mysqld.
        
          En algunos sistemas, el programa ldconfig
          que configura el lincador dinámico no reconoce un objeto
          compartido a no ser que su nombre comience con
          lib. En ese caso debe renombar el fichero
          como udf_example.so a
          libudf_example.so.
        
En Windows, puede compilar funciones definidas por el usuario usando el siguiente procedimiento:
Necesita obtener el repositorio fuente BitKeeper para MySQL 4.0 o superior. Consulte Sección 2.8.3, “Instalar desde el árbol de código fuente de desarrollo”.
              En el repositorio fuente, busque el directorio
              VC++Files/examples/udf_example . Hay
              ficheros llamados udf_example.def,
              udf_example.dsp, y
              udf_example.dsw .
            
              En el repositorio fuente, busque en el directorio
              sql . Copie
              udf_example.cc de este directorio al
              directorio
              VC++Files/examples/udf_example y
              renombre el fichero a
              udf_example.cpp.
            
              Abra el fichero udf_example.dsw con
              Visual Studio VC++ y úselo para compilar los UDFs como un
              proyecto normal.
            
Cuando el objeto compartido se ha instalado, notifique a mysqld con las nuevas funciones con estos comandos:
mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.so';
mysql> CREATE FUNCTION myfunc_double RETURNS REAL SONAME 'udf_example.so';
mysql> CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME 'udf_example.so';
mysql> CREATE FUNCTION lookup RETURNS STRING SONAME 'udf_example.so';
mysql> CREATE FUNCTION reverse_lookup
    ->        RETURNS STRING SONAME 'udf_example.so';
mysql> CREATE AGGREGATE FUNCTION avgcost
    ->        RETURNS REAL SONAME 'udf_example.so';
          Las funciones pueden borrarse con DROP
          FUNCTION:
        
mysql> DROP FUNCTION metaphon; mysql> DROP FUNCTION myfunc_double; mysql> DROP FUNCTION myfunc_int; mysql> DROP FUNCTION lookup; mysql> DROP FUNCTION reverse_lookup; mysql> DROP FUNCTION avgcost;
          Los comandos CREATE FUNCTION y
          DROP FUNCTION actualizan la tabla de
          sistema func en la base de datos
          mysql . El nombre de función, tipo y
          nombre de biblioteca compartida se salvan en la tabla. Debe
          tener los privilegios INSERT y
          DELETE para la base de datos
          mysql para crear y borrar funciones.
        
          No debe usar CREATE FUNCTION para añadir
          una función que se ha creado préviamente. Si necesita
          reinstalar una función, debe borrarla con DROP
          FUNCTION y reinstalarla con CREATE
          FUNCTION. Puede necesitar hacer esto, por ejemplo si
          recompila una nueva versión de su función, de forma que
          mysqld tenga la nueva versión. De otro
          modo, el servidor continua usando la versión antigua.
        
          Una función activa es una que se ha cargado con
          CREATE FUNCTION y no se ha borrado con
          DROP FUNCTION. Todas las funciones activas
          se recargan cada vez que el servidor arranca, a no ser que
          arranque mysqld con la opción
          --skip-grant-tables . En ese caso, la
          inicialización de UDFs no se hace y no están disponibles.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

