Valor de Retorno e Tartamento de Erros
A função de inicialização deve retornar 0
se nenhum erro ocorrer e 1
em outro caso. Se ocorrer um erro, xxx_init()
deve armazenar uma mensagem de erro terminada em null no parâmetro message
. A mensagem será retornada ao cliente. O buffer de mensagens tem MYSQL_ERRMSG_SIZE
caracteres, mas você deve tentar manter a mensagem com menos que 80 caracteres assim ela cabe na tela de terminal padrão.
O valor de retorno de uma função principal xxx()
é o valor da função, para funções long long
e double
. Uma função string deve retornar um ponteiro ao resultado e armazenar o tamanho da string no argumento length
.
Definá-os ao conteúdo e tamanho do valor de retorno. Por exemplo:
memcpy(result, 'result string', 13); *length = 13;
O buffer result
que é passado para o cálculo da função é de 255 bytes. Se o seu resultado couber nele, você não terá que se preocupar com alocação de memória para os resultados.
Se a sua função string precisar retornar uma string maior que 255 bytes, você deve alocar o espaço para ela com malloc()
em sua função xxx_init()
ou sua função xxx()
e liberá-la em sua função xxx_deinit()
. Você pode armazenar a memória alocada na posição ptr
na estrutura UDF_INIT
para ser reutilizado por chamadas xxx()
futuras. Leia "Sequência de Chamadas UDF para Funções Simples".
Para indicar um valor de retorno de NULL
na função principal, defina is_null
com 1
:
*is_null = 1;
Para indicar um erro retornado na função principal, atribua 1
ao parâmetro error
:
*error = 1;
Se xxx()
definir *error
com 1
para qualquer linha, o valor da função é NULL
para a linha atual e qualquer linha subsequente processada pela instrução na qual XXX()
foi chamado. (xxx()
nem mesmo será chamado para linhas subsequentes.) Nota: na versão do MariaDB anterior a 3.22.10, você deve configurar *error
e *is_null
: