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:

Retornar