O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog
Evitar conflitos na nomeação da UDF
Você pode evitar potenciais conflitos e resultados inesperados considerando suas convenções de nomenclatura de UDFs antes da implementação. Como os nomes de função podem ser sobrecarregados, eles podem colidir com nomes de função existentes e futuros do Amazon Redshift. Este tópico discute a sobrecarga e apresenta uma estratégia para evitar conflitos.
Sobrecarga de nomes de função
Uma função é identificada por seu nome e assinatura, que é o número de argumentos de entrada e tipos de dados dos argumentos. Duas funções no mesmo esquema podem ter o mesmo nome se tiverem assinaturas diferentes. Em outras palavras nomes de função podem ser sobrecarregados.
Quando você executa uma consulta, o mecanismo de consulta determina qual função deve ser chamada com base no número de argumentos fornecidos e nos tipos de dados dos argumentos. Você pode usar a sobrecarga para simular funções com um número variável de argumentos, até o limite permitido pelo comando CREATE FUNCTION.
Evitar conflitos com funções integradas do Amazon Redshift
Recomendamos que você nomeie todas as UDFs usando o prefixo f_. O Amazon Redshift reserva o prefixo f_ exclusivamente para UDFs e, ao prefixar os nomes das suas UDFs com f_, você garante que o nome da UDF não entre em conflito com nomes de funções SQL integradas existentes ou futuras do Amazon Redshift. Por exemplo, ao nomear uma nova UDF f_sum, você evita conflito com a função SUM do Amazon Redshift. Da mesma forma, se você nomear uma nova função f_fibonacci, evitará conflito se o Amazon Redshift adicionar uma função chamada FIBONACCI em uma versão futura.
Você pode criar uma UDF com o mesmo nome e assinatura de uma função SQL integrada existente do Amazon Redshift sem que o nome da função seja sobrecarregado se a UDF e a função integrada existirem em esquemas diferentes. Como as funções integradas existem no esquema de catálogo de sistema, pg_catalog, você pode criar uma UDF com o mesmo nome em outro esquema, tal como um esquema público ou definido pelo usuário. Em alguns casos, é possível chamar uma função que não está explicitamente qualificada com um nome de esquema. Em caso afirmativo, o Amazon Redshift pesquisa primeiro o esquema pg_catalog por padrão. Assim, uma função interna é executada antes de uma nova UDF com o mesmo nome.
Você pode alterar esse comportamento configurando o caminho de pesquisa para colocar pg_catalog no final. Se você fizer isso, suas UDFs tomem precedência sobre funções integradas, mas a prática pode causar resultados inesperados. A adoção de uma estratégia de nomeação exclusiva, tal como a utilização do prefixo reservado f_, é uma prática mais confiável. Para obter mais informações, consulte SET e search_path.