Dar nombre a las UDF - Amazon Redshift

Dar nombre a las UDF

Puede evitar resultados inesperados y conflictos potenciales si considera las convenciones para dar nombre a la User-Defined Scalar Function (UDF, Función escalar definida por el usuario) antes de la implementación. Como los nombres de las funciones pueden sobrecargarse, pueden confundirse con nombres de funciones de Amazon Redshift existentes y futuras. En este tema, se analiza la sobrecarga y se presenta una estrategia para evitar cualquier conflicto.

Sobrecarga de los nombres de función

Una función se identifica por su nombre y su firma, que es la cantidad de argumentos de entrada y los tipos de datos de los argumentos. Dos funciones del mismo esquema pueden tener el mismo nombre si tienen diferentes firmas. En otras palabras, los nombres de funciones pueden sobrecargarse.

Cuando se ejecuta una consulta, el motor de consultas determina qué función se debe llamar en función de la cantidad de argumentos proporcionados y los tipos de datos de esos argumentos. Puede utilizar la sobrecarga para simular funciones con una cantidad variable de argumentos, hasta el límite permitido por el comando CREATE FUNCTION.

Prevención de conflictos al dar nombre a las UDF

Recomendamos que los nombres que asigne a las UDF incluyan el prefijo f_. Amazon Redshift reserva el prefijo f_ exclusivamente para las UDF y, al utilizar el prefijo f_ en los nombres de las UDF, se asegura de que estos no entren en conflicto con los nombres de las funciones SQL futuras o existentes integradas de Amazon Redshift. Por ejemplo, si asigna el nombre f_sum a una UDF nueva, evitará conflictos con la función SUM de Amazon Redshift. De igual modo, si asigna el nombre f_fibonacci a una función nueva, evitará conflictos en el caso de que Amazon Redshift agregue una función llamada FIBONACCI en una versión futura.

Puede crear una UDF con el mismo nombre y la misma firma que una función SQL integrada de Amazon Redshift existente sin que se sobrecargue el nombre de la función, cada vez que la UDF y la función integrada existan en esquemas diferentes. Como las funciones integradas existen en el esquema de catálogo del sistema, pg_catalog, puede crear una UDF con el mismo nombre en otro esquema; por ejemplo, uno público o definido por el usuario. En algunos casos, es posible que llame a una función que no esté calificada explícitamente con un nombre de esquema. Si es así, Amazon Redshift busca primero el esquema pg_catalog de manera predeterminada. Por lo tanto, una función integrada se ejecuta antes que una UDF nueva con el mismo nombre.

Puede cambiar este comportamiento si configura la ruta de búsqueda de manera que coloque pg_catalog al final. Si lo hace, las UDF tendrán prioridad sobre las funciones integradas, pero esta práctica puede generar resultados inesperados. La adopción de una estrategia de nombres única, como el uso del prefijo reservado f_, es una práctica más confiable. Para obtener más información, consulte SET y search_path.