Sintaxe CREATE FUNCTION/DROP FUNCTION
Uma função definida pelo usuário (user-definable function - UDF) é um modo de extender o MariaDB com uma nova função que funciona como funções nativas do MariaDB tais como ABS()
e CONCAT()
.
AGGREGATE
é uma nova opção do MariaDB Versão 3.23. Uma função AGGREGATE
funciona exatamente como uma função GROUP
nativa do MariaDB como SUM
ou COUNT()
.
CREATE FUNCTION
salva o nome e o tipo da função e o nome da biblioteca compartilhada na tabela do sistema mysql.func
. Você deve ter privilégios INSERT
e DELETE
no banco de dados MariaDB
para criar e deletar funções.
Todas as funções ativas são recarregadas a cada vez que o servidor é reiniciado, a menos que você reinicie o mysqld
com a opção --skip-grant-tables
. Neste caso, a inicialização de UDF é ignorada e as UDFs estão indisponíveis. (Uma função ativa é aquela que foi carregada com CREATE FUNCTION
e não foi removida com DROP FUNCTION
.)
Para instruções sobre como escrever funções denidas por usuários, veja "Adicionando Novas Funções ao MySQL". Para o mecanisnmo UDF funcionar, as funções dever ser escritas em C ou C++, seu sistema operacional deve suporta carregamento dinâmico e você deve compilar o mysqld
dinamicamente (e não estaticamente).
Note que para fazer AGGREGATE
funcioanr, você deve ter uma tabela mysql.func
que contém a coluna type
. Se você não tem esta tabela, você deve executar o script mysql_fix_privilege_tables
para criá-la.