

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# UDF 이름 충돌 방지
<a name="udf-naming-udfs"></a>

UDF를 실행하기 전에 명명 규칙을 고려하여 잠재적 충돌이나 뜻밖의 결과를 피할 수 있습니다. 함수 이름은 오버로딩될 수 있기 때문에 이전이나 이후의 Amazon Redshift 함수 이름과 충돌을 일으키기 쉽습니다. 이번 주제에서는 오버로딩에 대해서 설명하면서 충돌을 피할 수 있는 전략을 제시하겠습니다.

## 함수 이름 오버로드
<a name="udf-naming-overloading-function-names"></a>

함수는 이름과 *서명*으로 구분합니다. 여기에서 서명이란 입력 인수의 수와 데이터 형식을 말합니다. 서명만 다르다면 동일한 스키마의 함수 2개가 이름이 같을 수도 있습니다. 다시 말해서 함수 이름은 중복 정의, 즉 *오버로딩*이 가능합니다.

쿼리를 실행하면 쿼리 엔진이 입력 인수의 수와 데이터 형식을 기준으로 호출할 함수를 결정합니다. 이때 오버로딩을 사용하면 다수의 인수를 바꿔가며 [CREATE FUNCTION](r_CREATE_FUNCTION.md) 명령에서 허용하는 최대 수까지 함수를 시뮬레이션할 수 있습니다.

## 기본 제공 Amazon Redshift 함수와의 충돌 방지
<a name="udf-naming-preventing-udf-naming-conflicts"></a>

접두사 `f_`를 사용하여 모든 UDF의 이름을 지정하는 것이 좋습니다. Amazon Redshift는 UDF에 한해 접두사 `f_`를 예약하기 때문에 UDF 이름에 접두사 `f_`,\$1를 사용하면 UDF 이름이 이전은 물론이고 이후로도 Amazon Redshift 내장 SQL 함수 이름과 충돌을 일으킬 일은 없습니다. 예를 들어 새로운 UDF의 이름을 `f_sum`으로 지정하면 Amazon Redshift SUM 함수와 충돌이 일어나지 않습니다. 마찬가지로 새로운 함수의 이름을 `f_fibonacci`로 지정하면 향후 버전에서 FIBONACCI라는 함수가 Amazon Redshift에 추가되더라도 충돌에 대한 걱정을 할 필요 없습니다.

UDF와 내장 함수가 서로 다른 스키마에 속하는 경우에는 함수 이름의 오버로딩 없이도 기존 Amazon Redshift 내장 SQL 함수와 동일한 이름과 서명으로 UDF를 생성할 수 있습니다. 내장 함수는 시스템 카탈로그 스키마인 pg\$1catalog에 존재하기 때문에 퍼블릭이나 사용자 정의 스키마처럼 다른 스키마의 함수와 동일한 이름으로 UDF를 생성할 수 있습니다. 경우에 따라 스키마 이름으로 명시적으로 규정되지 않은 함수를 호출할 수 있습니다. 이 경우 Amazon Redshift는 기본적으로 pg\$1catalog 스키마를 먼저 검색합니다. 따라서 기본 제공 함수는 같은 이름의 새 UDF보다 먼저 실행됩니다.

마지막에 pg\$1catalog를 배치하도록 검색 경로를 설정하여 이 동작을 변경할 수 있습니다. 이렇게 하면 UDF가 기본 제공 함수보다 우선하지만 실행하면 예기치 않은 결과가 발생할 수 있습니다. 따라서 예약된 접두사인 `f_`를 사용하는 것처럼 고유한 명명 전략을 도입하는 것이 훨씬 안정적입니다. 자세한 내용은 [SET](r_SET.md) 및 [search\$1path](r_search_path.md)(을)를 참조하세요.