

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# SYS\_UDF\_LOG
<a name="SYS_UDF_LOG"></a>

Registra mensagens de erro e aviso definidas pelo sistema que são geradas durante a execução da função definida pelo usuário (UDF). 

SYS\_UDF\_LOG está visível somente para superusuários. Para obter mais informações, consulte [Visibilidade de dados em tabelas e visualizações de sistema](cm_chap_system-tables.md#c_visibility-of-data).

## Colunas da tabela
<a name="SYS_UDF_LOG-table-rows"></a>


| Nome da coluna | Tipo de dados | Descrição | 
| --- | --- | --- | 
| query\_id | bigint | O identificador da consulta. | 
| function\_name | texto | O nome da função definida pelo usuário. | 
| record\_time | timestamp | A hora em que o log foi criado. | 
| sequence | integer | A sequência de uma única mensagem de log. | 
| message | texto | O texto da mensagem de log. | 

## Consultas de exemplo
<a name="SYS_UDF_LOG-sample-queries"></a>

O exemplo a seguir mostra como as UDFs tratam os erros definidos pelo sistema. O primeiro bloco mostra a definição de uma função de UDF que retorna o inverso de um argumento. Quando você executa a função e fornece 0 como argumento, a função retorna um erro. A última instrução retorna a mensagem de erro registrada em SYS\_UDF\_LOG.

```
-- Create a function to find the inverse of a number.
CREATE OR REPLACE FUNCTION f_udf_inv(a int) 

RETURNS float 

IMMUTABLE AS $$return 1/a 

$$ LANGUAGE plpythonu; 

-- Run the function with 0 to create an error.
Select f_udf_inv(0); 

-- Query SYS_UDF_LOG to view the message.
Select query_id, record_time, message::varchar from sys_udf_log; 


query_id    |    record_time              |                 message
----------+----------------------------+-------------------------------------------------------
2211        | 2023-08-23 15:53:11.360538 |  ZeroDivisionError: integer division or modulo by zero line 2, in f_udf_inv\n return 1/a\n
```

O exemplo a seguir adiciona o registro em log e uma mensagem de aviso à UDF para que operações de divisão por zero gerem uma mensagem de aviso em vez de interromper o processamento com uma mensagem de erro.

```
-- Create a function to find the inverse of a number and log a warning if you input 0.
CREATE OR REPLACE FUNCTION f_udf_inv_log(a int)
  RETURNS float IMMUTABLE
 AS $$ 
  import logging
  logger = logging.getLogger() #get root logger
  if a==0:
    logger.warning('You attempted to divide by zero.\nReturning zero instead of error.\n') 
    return 0
  else:
     return 1/a
$$ LANGUAGE plpythonu;

-- Run the function with 0 to trigger the warning.
Select f_udf_inv_log(0);

-- Query SYS_UDF_LOG to view the message.
Select query_id, record_time, message::varchar from sys_udf_log;

 query_id |        record_time         |                                    message
----------+----------------------------+-------------------------------------------------------------------------------
     0   | 2023-08-23 16:10:48.833503 | WARNING: You attempted to divide by zero.\nReturning zero instead of error.\n
```